我有三个简单的模型:
正如AD7six在这个问题(How to organize CakePHP code?)中告诉我的那样,我正在使用saveAssociated()来持久保存公司和公司用户(与用户的“链接”),但我做错了什么:
public function add() {
if ($this->request->is('post')) {
$this->request->data['CompanyUser'] = array (
'user_id' => $this->Auth->user('id'),
'user_role' => 'admin'
);
debug($this->request->data);
if ($this->Company->saveAssociated($this->request->data)) {
return $this->redirect($this->Auth->redirect());
}
}
}
公司已保存(查看SQL日志),但CompanyUser未保存。 $ this-> request->数据的内容为:
array(
'Company' => array(
'name' => 'will this work?',
'vat_number' => 'maybe...'
),
'CompanyUser' => array(
'user_id' => '1',
'user_role' => 'admin'
)
)
问题是忽略了CompanyUser“key”的内容。 Cake尝试添加CompanyUser,但只填写“company_id”,“created”和“modified”字段,因此MySQL会为“user_id”字段抛出“Integrity Constraint Violation”。并且未添加“user_role”(CompanyUser的字段)。
我做错了什么,这里?
答案 0 :(得分:1)
保存hasMany关系时,数组应如下所示:
array(
'Company' => array(...),
'CompanyUser' => array(
array('user_id' => 1, 'user_role' => 'admin'),
...
)
);