setSource не учитывается поведением дерева Cakephp

Дерево поведения и ассоциаций хорошо работает в моем приложении.

Я пытаюсь переключить древовидную таблицу во время выполнения, которая хорошо работает со следующим кодом в методе beforeFind:

$this->setSource($table);

Однако, когда я перераспределяю дерево с помощью метода recovery, имя таблицы не учитывается для всех запросов: я получаю запросы SHOW COLUMN для новой таблицы и запросы SELECT для запроса по умолчанию. Я попытался отключить и очистить кэш моего приложения безуспешно.

Я также изменяю таблицу связанных моделей, но проблемы возникают и без этого.

Любой совет будет оценен.

Изменить: вот модель используется: https://github.com/croogo/croogo/blob/1.3/models/taxonomy.php

Я отключил (постоянно, а не во время выполнения) поведение кэша.

Я проследил проблему в метод восстановления, 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 ответ

Решение

Проблема может быть исправлена ​​путем изменения поведения дерева:

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

Эта ошибка принята и упоминается здесь: https://cakephp.lighthouseapp.com/projects/42648/tickets/3820-cannot-change-table-name-using-treebehaviorrecover-in-shell

Тем не менее, не уверен, что это будет исправлено в исходнике CakePHP, поскольку он очень специфичен.

Другие вопросы по тегам