MAMP и CakePHP обращаются к проблеме модели

0

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

Я немного развился на CakePHP и решил localhost version на MAMP, чтобы я мог демонстрацию своего приложения для людей без зависимости от интернет-соединения.

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

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

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

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

который отправляется на user.php модели и запускает эту функцию. Это отлично работает на нашем live и dev сайтов, но по какой-то причине в 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

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

Теги:
cakephp
model
mamp

2 ответа

0
Лучший ответ

Найден решение. Это не имеет никакого отношения к MAMP, на самом деле мы нашли эту ошибку на нашем dev-сервере в конце концов, но не наш живой сервер.

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

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

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

0

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

  • 0
    Запрос внутри самой функции в порядке. По какой-то причине Cake интерпретирует функцию модели как функцию MySQL

Ещё вопросы

Сообщество Overcoder
Наверх
Меню