私は2つのテーブルを持っていてUsers
、Clients
ユーザー テーブルの構造は次のようになります。
id (primary)
username(varchar)
password, client_id
これで、クライアント テーブルは次のようになります。
user_id, client_id(primary), is_new
これらの関係は次のように定義されます。
class User extends AppModel
{
public $name = 'User';
public $hasOne = array(
'Client' =>array(
'className' => 'Client',
'dependent' => true,
'foreignKey' => 'client_id'
)
);
}
class Client extends AppModel
{
public $name = 'Client';
public $primaryKey = 'client_id';
public $belongsTo = array(
'User' => array(
'className' => 'User',
'dependent' => true,
'foreignKey' => 'user_id'
)
);
}
現在、ユーザーコントローラーには次の保存アクションがあります。
if ($this->request->is('post')) {
$data = null;
$client_id = null;
if ($this->request->data['User']['group_id'] == 1) {
$client_id = 2;
} elseif ($this->request->data['User']['group_id'] == 2) {
$client_id = $this->request->data['User']['Client id'];
}
$data = array('User' => array(
'username' => $this->request->data['User']['username'],
'password' => $this->request->data['User']['password'],
'group_id' => $this->request->data['User']['group_id'],
'client_id' => $client_id),
'Client' => array('client_id' => $client_id)
);
if ($this->User->save($data)) {
$this->Session->setFlash(__('The user has been saved'));
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The user could not be saved. Please, try again.'));
}
}
$groups = $this->User->Group->find('list');
$this->set(compact('groups'));
}
保存すると、正しい client_id を持つユーザー テーブルに新しいエンティティが追加されますが、クライアント テーブルには何も追加されません。
なぜこれが起こっているのか誰にも教えてもらえますか?
関数を次のように変更しようとしたことに注意してくださいsaveAll();
アップデート
私が次のことをした場合:
$data = array( 'User' => array( 'username' => $this->request->data['User']['username'],
'password' => $this->request->data['User']['password'],
'group_id' => $this->request->data['User']['group_id'],
'client_id' => $client_id ),
'Client' => array('client_id' => $client_id) );
if ($this->User->Client->saveAll($data)) {
}
別名使用$this->User->Client->saveAll
の代わりに$this->User->saveAll()
すべてが正常に動作します..
今はこれでいいのですが、そういうことでしょうか?