Pregunta

Hice esta pregunta en el grupo de Google CakePHP pero no encontré ninguna resolución, así que espero que tengamos más suerte aquí.

He estado desarrollando en CakePHP por un tiempo y decidí tener una Versión localhost en MAMP para que pueda mostrar mi aplicación a las personas sin depender de una conexión a internet.

Tenemos un par de consultas complejas de MySQL que se están realizando y que estamos usando

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

Hemos colocado estos en los modelos apropiados dentro de una función para eliminar toda esta lógica del controlador. Por lo tanto, desde el Controlador tendremos algo como

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

, que va al usuario.php Modelo y ejecuta esa función. Esto funciona bien en nuestra vida y desarrollo. sitios, pero por alguna razón en MAMP me aparece un error cada vez que se realiza este tipo de llamada, como ejemplo de una de las llamadas:

Error:

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]

Context:

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

La línea 88 en webroot es la siguiente: $ Dispatcher- > dispatch ($ url);

He probado ambos 1.2 y 1.2.5 de CakePHP. MySQL en MAMP es 5.1.31 y en mi host, MediaTemple, es 5.1.26-rc

Gracias por cualquier ayuda

¿Fue útil?

Solución 2

Encontré una solución. No tiene nada que ver con MAMP, de hecho, finalmente encontramos este error en nuestro servidor de desarrollo, pero no en nuestro servidor en vivo.

Básicamente, los núcleos de Cake fueron diferentes en ambos servidores, pero minuciosamente (uno fue RC, el otro fue el final). El anterior fue capaz de interpretar la relación del modelo HABTM, pero el núcleo más nuevo no lo hace a menos que los especifique explícitamente (esto debe ser un error ya que seguí todas las convenciones de nombres).

Así es como funcionará: - tienes un usuario user.php y tag.php - En user.php, tendrá una relación HABTM con el modelo de etiqueta - En esa matriz, agregue el campo: 'con' = > 'UsersTag' - Haz lo mismo para tag.php

De esta manera, CakePHP no tiene que averiguar cuál es el nombre del modelo (aunque debería poder hacerlo)

Otros consejos

¿Qué sucede si obligas a Cake a repetir la consulta e intentas ejecutarla manualmente en un cliente mySQL? Parece que su versión local está creando una consulta diferente a la versión en su host, ya que mySQL se está quejando de la sintaxis.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top