Вставка данных из одной формы в две таблицы

Мне нужно вставить данные из одной формы в две таблицы в CakePHP 3.0.

Я знаю, что не могу использовать saveAll(), так как это устарело. Две таблицы: Users и Addresses

Внешний ключ id(Users) и user_id(Addresses)

В UsersTable инициализация имеет $this->hasOne('Addresses');, а в AddressesTable $this->belongsTo('Users');

Это мой add.ctp:

<legend><?= __('Add User') ?></legend>
    <?php
        echo $this->Form->input('username');
        echo $this->Form->input('password');
        echo $this->Form->input('role', [
        'options' => ['admin' => 'Admin', 'chinateam' => 'China Team', 'italianteam' => 'Italian team', 'reseller'=>'Reseller']
    ]);
        echo $this->Form->input('Address.address');
    ?>

UserController.php

public function add() {
$this->log('Quote Controller --> Add Method...1');
$this->log($this->request->data);
$user = $this->Users->newEntity();
if ($this->request->is('post')) {
  $user = $this->Users->patchEntity($user, $this->request->data, ['associated' => ['Addresses']]); 
  if ($this->Users->save($user)) {
    $this->Flash->success('The user has been saved.');
    //return $this->redirect(['action' => 'index']);
  } else {
    $this->Flash->error('The user could not be saved. Please, try again.');
  }
}
$this->set(compact('user'));
$this->set('_serialize', ['user']);

Этот сценарий вставляет данные в таблицу Users, но не в таблицу Addresses.


person drNET    schedule 14.04.2015    source источник
comment
Вы можете сначала вставить данные в основную таблицу, а затем в дочернюю таблицу.   -  person Pratik    schedule 14.04.2015
comment
В моем случае... Я создал внешний ключ таким образом. ALTER TABLE users ADD FOREIGN KEY (id) REFERENCES addresss(user_id);   -  person drNET    schedule 14.04.2015
comment
Не точная копия, но вы должны понять. И в случае, если у вас возникли проблемы с внешним ключом (то, что вы показываете здесь, не позволит вставлять пользователей, когда не существует адреса с user_id, который соответствует пользователям id, я подозреваю, что это должно работать наоборот), то это, вероятно, что-то для новый вопрос.   -  person ndm    schedule 14.04.2015