【问题标题】:Error using saveAssociated with CakePHP使用与 CakePHP 关联的 saveAssociated 时出错
【发布时间】:2013-10-31 18:44:12
【问题描述】:

我有三个简单的模型:

  • 用户
  • 公司
  • CompaniesUsers(通过用户和公司之间的关系具有Many)

正如 AD7six 在这个问题 (How to organize CakePHP code?) 中告诉我的那样,我正在使用 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 的一个字段)。

我做错了什么,在这里?

【问题讨论】:

  • 我认为您的数据组织不正确。公司应该有很多公司用户,对吗?那么数组应该更像array('Company' => array(...), 'CompanyUser' => array(array('user_id' => 1, 'user_role' => 'admin'), ...);
  • 你是对的!!请将您的答案发布为“完整答案”,以便我投票给您。

标签: cakephp


【解决方案1】:

保存 hasMany 关系时,数组应如下所示:

array(
  'Company' => array(...), 
  'CompanyUser' => array(
      array('user_id' => 1, 'user_role' => 'admin'), 
      ...
    )
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多