我有三个简单的模型:
- 用户
- 公司
- CompaniesUsers(通过用户和公司之间的关系具有很多)
正如 AD7six 在这个问题中告诉我的(如何组织 CakePHP 代码?),我正在使用 saveAssociated() 来持久化 Company 和 CompanyUsers(带有指向用户的“链接”),但我做错了:
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());
}
}
}
Company 已保存(查看 SQL 日志),但 CompanyUser 未保存。$this->request->data 的内容是:
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 的一个字段)。
我做错了什么,在这里?