CakePHP: HABTM неправильно выполняет соединение при вызове habtmDelete - PullRequest
1 голос
/ 30 марта 2011

Мы обновляем Cake 1.2 до 1.3.8 и используем поведение ExtendedAssociations.

Одна из проблем, с которыми мы сталкиваемся, связана с нашей моделью Store , которая имеет отношение HABTM к Module через stores_modules .

Получение данных все хорошо, но одна проблема, переходящая на 1.3.8, кажется, представила, что когда мы хотим удалить все Модули из Store - в Магазинах модель

$ this-> habtmDeleteAll ('Модуль', $ this-> id);

Проблема заключается в том, что это приводит к следующему SQL-запросу (так как сначала выбирается все store_modules, чтобы посмотреть, что удалить)

ВЫБРАТЬ StoresModule. module_id ОТ stores_modules КАК StoresModule ГДЕ StoresModule. store_id = 1 И Module. system_default = 0

_

2011-03-29 18:27:46 Предупреждение: предупреждение (512): ошибка SQL: 1054: неизвестный столбец «Module.system_default» в «предложении where» в [/usr/lib/cakephp_1.3.8/cake/ libs / model / datasources / dbo_source.php, строка 684]

Похоже, проблема в том, что приведенный выше оператор SQL не добавляет JOIN в таблицу modules .. следовательно, он не может оштрафовать Module. system_default

Любая помощь по этому вопросу была бы великолепна, это действительно поставило меня в тупик:)

Крис.

1 Ответ

0 голосов
/ 30 марта 2011

Я не совсем уверен, что понимаю, но, похоже, вы не правильно называете свои модели. Если вам нужно удалить все связанные записи модели, вы, вероятно, сделаете что-то вроде этого:

$this->Store->Modules->deleteAll(array('Store.id' => $id), true, false);

НЕ ИСПЫТАНО!

...