CakePHP使用相同的模型保存HABTM关系

时间:2013-05-08 12:12:28

标签: cakephp

我在保存一些HABTM数据时遇到了问题。

我的模型'类别'与自身有一个名为'SubCategory'的HABTM关系

$this->Category->create();
$c["Category"]["display_order"] = $this->Category->getNextDisplayOrder();
$c["Category"]["title"] = $this->request->data["title"];
$c["SubCategory"]["category_id"] = $id; //The id of the parent category

$new_cat = $this->Category->saveAll($c);

这会创建我的新类别并将其保存在数据库中,但是id在子类别表中以错误的顺序保存。 (category_id =>我刚制作的新猫ID,subcategory_id => parent_id)

为什么id被保存在错误的列中的任何想法?

这是我的HABTM关系

public $hasAndBelongsToMany = array(
        'SubCategory' => array(
            'className' => 'Category',
            'joinTable' => 'categories_subcategories',
            'foreignKey' => 'category_id',
            'associationForeignKey' => 'subcategory_id',
            'unique' => 'keepExisting',
            'conditions' => '',
            'fields' => '',
            'order' => '',
            'limit' => '',
            'offset' => '',
            'finderQuery' => '',
            'deleteQuery' => '',
            'insertQuery' => ''
        )
    );

1 个答案:

答案 0 :(得分:0)

我对你的帖子感到困惑。

如果

$c["SubCategory"]["category_id"] = $id; //The id of the parent category

这应该是刚刚创建的类别的id还是父类别?你在帖子中说了两件不同的事情。

  

(category_id =>我刚制作的新猫ID,subcategory_id => parent_id)

无论哪种方式,如果您希望id为您刚刚创建的id,请将该行更改为

$c["SubCategory"]["category_id"] = $this->Category->id;

$c["SubCategory"]["category_id"] = $this->Category->getLastInsertID();