MAMP и CakePHP обращаются к проблеме модели - PullRequest
0 голосов
/ 22 октября 2009

Я задал этот вопрос в google-группе CakePHP, но не нашел решения, так что, надеюсь, здесь повезет больше.

Я немного занимался разработкой CakePHP и решил иметь локальная версия на MAMP, чтобы я мог продемонстрировать свое приложение людям без зависимости от подключения к Интернету.

У нас есть пара сложных запросов MySQL, и мы используем

$this->query('SELECT...');

Мы поместили их в соответствующие модели внутри функции, чтобы удалить всю эту логику из контроллера. Следовательно, из контроллера у нас будет что-то вроде

$this->Users->getMeSomething($variable);

, это идет к user.php модель и запускает эту функцию. Это отлично работает на нашей жизни и разработки сайтов, но по какой-то причине на MAMP я получаю сообщение об ошибке при каждом вызове такого типа, например, один из вызовов:

Ошибка:

Warning (512): SQL Error: 1064: You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the
right syntax to use near '__getUsersForUsers' at line 1 [CORE/cake/
libs/model/datasources/dbo_source.php, line 525]

Контекст:

DboSource::showQuery() - CORE/cake/libs/model/datasources/
dbo_source.php, line 525
DboSource::execute() - CORE/cake/libs/model/datasources/
dbo_source.php, line 201
DboSource::fetchAll() - CORE/cake/libs/model/datasources/
dbo_source.php, line 336
DboSource::query() - CORE/cake/libs/model/datasources/dbo_source.php,
line 297
Model::call__() - CORE/cake/libs/model/model.php, line 441
Overloadable::__call() - CORE/cake/libs/overloadable_php5.php, line 52
AppModel::__getUsersForUsers() - [internal], line ??
UsersController::view() - APP/controllers/users_controller.php, line
401
Object::dispatchMethod() - CORE/cake/libs/object.php, line 118
Dispatcher::_invoke() - CORE/cake/dispatcher.php, line 227
Dispatcher::dispatch() - CORE/cake/dispatcher.php, line 194
[main] - APP/webroot/index.php, line 88

Строка 88 в webroot выглядит так: $ Dispatcher-> dispatch ($ url);

Я пробовал как 1.2, так и 1.2.5 CakePHP. MySQL на MAMP - 5.1.31, а на моем хосте MediaTemple - 5.1.26-rc

Спасибо за любую помощь

Ответы [ 2 ]

0 голосов
/ 26 октября 2009

Нашел решение. Это не имеет ничего общего с MAMP, на самом деле мы нашли эту ошибку на нашем сервере разработки, но не на нашем живом сервере.

По сути, ядро ​​Cake были разными на обоих серверах - но в мельчайших подробностях (одно было RC, другое было финальным). Более старый мог интерпретировать отношение модели HABTM, но более новое ядро ​​не может, если вы явно не укажете их (это должно быть ошибкой, поскольку я следовал всем соглашениям об именах).

Так вот как это будет работать: - у вас есть модель user.php и tag.php - В user.php у вас будут отношения HABTM с моделью Tag - В этом массиве добавьте поле: 'with' => 'UsersTag' - Сделайте то же самое для tag.php

Таким образом, CakePHP не нужно выяснять, как называется модель (хотя она должна быть в состоянии)

0 голосов
/ 22 октября 2009

Что произойдет, если вы заставите торт повторить запрос и попытаетесь запустить его вручную в клиенте MySQL? Похоже, ваша локальная версия создает запрос, отличный от версии на вашем хосте, поскольку mySQL жалуется на синтаксис.

...