Cakephp:如何摆脱不必要的加入?

时间:2011-08-18 13:26:44

标签: cakephp cakephp-1.3

enter image description here

我想摆脱CategoriesRecord Array。 我使用以下方法绑定模型:

$this->Category->bindModel(
                array('hasAndBelongsToMany' =>
                    array(
                        'Record' =>
                        array(
                            'className' => 'Record',
                            //'joinTable' => 'categories_records',
                            'foreignKey' => 'categories_id',
                            'associationForeignKey' => 'records_id',
                            'conditions' => array('Record.active' => 1)
                        )
                    )
                )
        );

欢呼声

3 个答案:

答案 0 :(得分:1)

Habtm需要一个中间表 - 这是您注释掉的关系中的joinTable。默认情况下,这将使用名为CategoriesRecord的AppModel实例,该实例映射到categories_records表。

你不能摆脱这个中间模型/表或habtm将无法正常工作。 (它是多对多关系的“连接表”)

将数组保留在返回的数据中确实没有任何害处 - 它实际上为您提供了在构建表单/操作链接等时访问每个相关id值的便捷方法。

答案 1 :(得分:1)

尝试可以包含的行为来摆脱你不需要的东西。使用find()时使用它; http://book.cakephp.org/view/1323/Containable

答案 2 :(得分:1)

正如Jacktrade告诉Containable行为是最好的解决方案,如果你有很多表和关系。即使你可以动态尝试BindModel and Unbind Model

$this->Model->unbindModel(
    array('associationType' => array('associatedModelClassName'))
);