树行为和关联在我的应用程序中运行良好。
我正在尝试在运行时切换树表,这对于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.
答案 0 :(得分:0)
可以通过修改树行为来解决问题:
$Model->VerifyParent->setSource($Model->useTable)
这是一个在此处接受并引用的错误: https://cakephp.lighthouseapp.com/projects/42648/tickets/3820-cannot-change-table-name-using-treebehaviorrecover-in-shell
但是,不确定它是否会在cakephp源中修复,因为它非常具体。