3 つの単純なモデルがあります。
- ユーザー
- 企業
- CompaniesUsers (Users と Companies の間の関係による hasMany)
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 の「キー」の内容が無視されることです。Cake は CompanyUser を追加しようとしますが、「company_id」、「created」、および「modified」フィールドしか入力しないため、MySQL は「user_id」フィールドに対して「Integrity Constraint Violation」をスローします。また、「user_role」(CompanyUser のフィールド) は追加されません。
ここで私が間違っていることは何ですか?