【问题标题】:Saving with HABTM in CakePHP在 CakePHP 中使用 HABTM 保存
【发布时间】:2009-07-30 03:41:26
【问题描述】:

我一次性创建了多个关联,但在保存方面存在一些问题。

我有以下代码:

<?php
foreach($userData as $user) {
    $data = array('User' => array('id' => $user['id']), 'Site' => array('id' => $user['site_id']));
    $this->User->save($data);
}
?>

我尝试过以不同方式格式化数据数组,尽管我总是遇到同样的问题。插入新条目或更新当前条目时会移动以前的条目。

虽然我需要触发一个行为,但我可以只使用以下内容。

$this->User->SiteUser->save($data);

编辑:还有 $this->User->create();好像没多大用。

【问题讨论】:

    标签: php cakephp has-and-belongs-to-many


    【解决方案1】:

    IRC 帮助找出问题所在,一旦 unique 键设置为 false,一切都能够正确保存。

    //In the user model
    var $hasAndBelongsToMany = array(
      'Site' => array(
        'className' => 'Site',
        'unique' => false
      )
    );
    

    【讨论】:

      【解决方案2】:

      尝试在新的save() 之前重置id,可能在两种型号上:

      $this->User->id = null;
      

      Cake 根据集合 id 决定是更新还是插入条目,save() 自动设置一个 id。不知道为什么create() 不为你处理这个问题。

      另外,如果你想保存 HABTM 数据,你应该使用saveAll() 而不是save()。另见this question

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-14
        • 2013-09-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多