0

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 のフィールド) は追加されません。

ここで私が間違っていることは何ですか?

4

1 に答える 1