我有一个模型'Catgeory',它与自身有 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' => ''
)
);
这是我用来保存类别的代码。我想创建一个关系,使这个类别成为父母的孩子($id)
$this->Category->create();
$c["Category"]["title"] = $this->request->data["title"];
$c["SubCategory"]["CategoriesSubcategory"]["category_id"] = $id;
这个结构对我来说似乎是正确的,但这并没有建立关系。但是,如果我尝试使用
$c["SubCategory"]["CategoriesSubcategory"]["subcategory_id"] = $id;
这确实有效,但父母和孩子的方式是错误的。所以这向我表明foreignKey 和associationForeignKey 是错误的方式。所以我在我的关系中改变了它们:
public $hasAndBelongsToMany = array(
'SubCategory' => array(
'className' => 'Category',
'joinTable' => 'categories_subcategories',
'foreignKey' => 'subcategory_id',
'associationForeignKey' => 'category_id',
'unique' => 'keepExisting',
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
'deleteQuery' => '',
'insertQuery' => ''
)
);
现在这意味着关系得到了正确保存,但是,我认为这种关系是错误的,因为当我找到所有类别时,孩子们不再出现在结果中。
有什么想法我哪里出错了吗?我保存错了吗?我需要创建模型子类别吗?