Cakephp树行为未考虑setSource

Cakephp树行为未考虑setSource,cakephp,croogo,Cakephp,Croogo,树行为和关联在我的应用程序中运行良好 我正在尝试在运行时切换树表,这与beforeFind方法中的以下代码配合得很好: $this->setSource($table); 但是,当我使用recover方法重新执行树时,所有查询都不会考虑表名:我将在新表上显示列查询,并在默认表上选择查询。我试图禁用并清除应用程序的缓存,但没有成功 我也在改变相关模型的表格,但如果没有它,问题也会出现 任何建议都将不胜感激 编辑: 以下是使用的模型: 我(永久地,而不是在运行时)禁用了缓存行为 我将问题追

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

我正在尝试在运行时切换树表,这与beforeFind方法中的以下代码配合得很好:

$this->setSource($table);
但是,当我使用recover方法重新执行树时,所有查询都不会考虑表名:我将在新表上显示列查询,并在默认表上选择查询。我试图禁用并清除应用程序的缓存,但没有成功

我也在改变相关模型的表格,但如果没有它,问题也会出现

任何建议都将不胜感激

编辑: 以下是使用的模型:

我(永久地,而不是在运行时)禁用了缓存行为

我将问题追溯到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;
我开了一张灯塔票:


可以通过修改树的行为来修复此问题:

$Model->VerifyParent->setSource($Model->useTable)
此错误在此处被接受和引用:


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

如果我调试到树行为的recover方法中,useTable设置正确。cakephp版本是1.3.14Hi@snowflake,您能为我们提供一些关于为什么需要在运行时声明此行为的见解吗?另外,你能在你的问题中发布你的模型代码吗。谢谢大家!@Sam Delaney,树行为不是在运行时声明的。“表更改行为”是在运行时发生的,因为我使用的Croogo将所有“分类法”存储在一个表中。我有很多不同的数据,我想很容易地处理(加载/卸载),还有几个表更合适。PHP版本是PHP5.3.10-1ubuntu3.6,带有Suhosin补丁(cli)。Cake项目已经将错误跟踪切换到Github问题,因此上面的链接不再起作用。这种方法也不适用于Cake 2.5(至少)。此外,还使用TreeBehavior的动态创建的模型(使用
new Model()
)不仅不能设置不同的源表,而且不能使用默认值以外的数据源(定义见
Config/database.php
)。两种情况下的源问题似乎都是问题中最初确定的
bindModel()
@snowflake。
$Model->VerifyParent->setSource($Model->useTable)