Cakephp:如何摆脱未命名的连接?

Cakephp:如何摆脱未命名的连接?,cakephp,cakephp-1.3,Cakephp,Cakephp 1.3,我想去掉CategoriesRecord数组。 我使用以下方法绑定模型: $this->Category->bindModel( array('hasAndBelongsToMany' => array( 'Record' => array( 'cla

我想去掉CategoriesRecord数组。 我使用以下方法绑定模型:

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

cheers

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

您无法摆脱此中间模型/表格,否则habtm将无法工作。(它是多对多关系的“联接表”)


将数组保存在返回的数据中并没有什么害处——它实际上为您在构建表单/操作链接等时访问每个相关id值提供了一种方便的方法。

尝试使用可包含行为来摆脱不需要的东西。使用find()时使用它;

正如jacktrade告诉我们的那样,如果您有很多表和关系,行为是最好的解决方案。即使您可以随时尝试

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

Thx的答案-我使用CONTANDABLE,但我真的无法摆脱数组-我想阿巴·布莱恩特是对的-否则证明我错了如果返回太多数据确实是一个问题-您可以始终使用afterFind回调循环您的结果并取消数组设置。-或者,您可以使用Set类在将其传递给视图之前提取出所需的内容。同样,如果没有中间表,就不会有多对多关系。但是,一旦获取了数据,就可以从每个结果中删除该索引(特别是当您不需要知道视图中的任何位置都涉及到哪两个相关id时)