CakeSource树行为没有考虑setSource

时间:2013-05-07 21:28:10

标签: cakephp croogo

树行为和关联在我的应用程序中运行良好。

我正在尝试在运行时切换树表,这对于beforeFind方法中的以下代码很有效:

$this->setSource($table);

但是,当我使用recover方法对树进行重新调整时,所有查询都不考虑表名:我在新表上获得SHOW COLUMN查询,在默认表上查询SELECT查询。我试图禁用并清除我的应用程序缓存,但没有成功。

我也正在改变相关模型的表格,但问题仍然没有它。

任何建议都将受到赞赏。

编辑: 这是使用的模型: https://github.com/croogo/croogo/blob/1.3/models/taxonomy.php

我禁用了(永久性的,不是在运行时)Cache行为。

我将问题追溯到recover方法,bindModel没有考虑useTable。

 $Model->bindModel(array('belongsTo' => array('VerifyParent' => array(
                            'className' => $Model->name,
                            'foreignKey' => $parent,
                            'fields' => array($Model->primaryKey, $left, $right, $parent),
                    ))));

我尝试没有成功:

$Model->VerifyParent->useTable = $Model->useTable;
我开了一张灯塔票: https://cakephp.lighthouseapp.com/projects/42648/tickets/3820-cannot-change-table-name-using-treebehaviorrecover-in-shell

belongsTo associations cannot define custom tables for the linked model. You may need to seed ClassRegistry with a properly configured model with the VerifyParent key.

1 个答案:

答案 0 :(得分:0)

可以通过修改树行为来解决问题:

$Model->VerifyParent->setSource($Model->useTable)

这是一个在此处接受并引用的错误: https://cakephp.lighthouseapp.com/projects/42648/tickets/3820-cannot-change-table-name-using-treebehaviorrecover-in-shell

但是,不确定它是否会在cakephp源中修复,因为它非常具体。