Модель Cakephp под названием "Клуб" вообще не работает! Зарезервированное ключевое слово? - PullRequest
0 голосов
/ 02 сентября 2011

В Cakephp2.0 у меня есть модель с именем "Club", и я обращаюсь к ней из "ClubsController".Если я пытаюсь найти внутри этого контроллера $ this-> Club-> find, он говорит: «Ошибка: Таблица базы данных club для модели Club не найдена». Трассировка стека имеет

.....ClubsController.php(7): Model->find('first', Array)

Реальная таблица базы данных называется "ClubTable", которую я указал в классе с $useTable = 'ClubTable'.Это заставляет меня верить, что это автоматически делает модель под названием «Клуб», которая отличается от моей модели.Структура папки как таковая:

/app/Model/Club.php
/app/Plugin/Admin/Controller/ClubsController.php

Теперь вот кикер, если я изменю свою модель на Club123.php с названием модели "Club123".Затем в контроллере я просто выполняю $this->loadModel('Club123');, он отлично работает, загружает мою модель и подключается к моей базе данных и к таблице "ClubTable".

Является ли "Club" зарезервированным ключевым словом?

Чтобы еще больше запутать проблему, она отлично работает, когда я не использую плагин (создаю ClubsController в папке / app / Controllers).Чтобы подвести итог проблемы:

Модель Club не может быть найдена при вызове из моего плагина, но модель Club123 может быть.Модель Club может быть найдена, когда ее нет внутри плагина.

Любая помощь будет принята с благодарностью, когда я вырываю свои волосы.О, я также удалил все файлы в папке / app / tmp / cache / models /.

Ответы [ 2 ]

0 голосов
/ 17 ноября 2011

Этот вопрос был мертв в течение нескольких месяцев. Способность CakePHP обрабатывать различные среды с помощью «плагинов» оказалась слишком неудобной. CodeIgniter позволил мне легко создавать вложенные каталоги и получать доступ к общим моделям. Поэтому я думаю, что мое решение этой проблемы было: переключиться на CodeIgniter!

0 голосов
/ 03 сентября 2011

Внимательно проверьте ваши соглашения об именах.

В файловой системе все имена должны быть LOWERCASE с подчеркиванием, используемым для разделения слов.

В PHP они должны быть CamelCase.

Я бы предложил перечитать эту часть книги , чтобы убедиться, что вы все знаете правильно.

Я считаю, что настройка и использование консоли Cake Bake устранит проблемы такого рода, поскольку все генерируется автоматически:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...