Pergunta

Eu fiz esta pergunta no CakePHP google-grupo, mas não encontrou qualquer resolução, por isso espero que terá melhor sorte aqui.

Eu tenho vindo a desenvolver no CakePHP para um pouco e decidiu ter um versão localhost em MAMP para que eu pudesse demonstrar meu aplicativo para as pessoas sem depender de uma conexão com a Internet.

Nós temos um par de consultas MySQL complexos sendo feito, e usando

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

Nós colocamos estes nos modelos apropriados dentro de uma função para remover toda essa lógica do controlador. Assim a partir do controlador teremos algo como

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

, que vai para o user.php modelo e executado essa função. Esta multa funciona em nossa vida e dev sites, mas por alguma razão em MAMP eu estou recebendo um erro sempre que este tipo de chamada é feita, como um exemplo de uma das chamadas:

Erro:

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]

Contexto:

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

Linha 88 em webroot é esta: $ Dispatcher-> expedição ($ url);

Eu tentei ambos 1.2 e 1.2.5 do CakePHP. MySQL em MAMP é 5.1.31 e no meu host, MediaTemple, é 5.1.26-rc

Obrigado por qualquer ajuda

Foi útil?

Solução 2

Encontrado uma solução. Não tem nada a ver com MAMP, na verdade encontramos este bug no nosso servidor dev eventualmente, mas não o nosso servidor ao vivo.

Basicamente, os do núcleo bolo eram diferentes em ambos os servidores - mas minuciosamente para que (foi RC, o outro era o final). A mais velha era capaz de interpretar a relação modelo HABTM, mas os do núcleo mais recentes não menos que você especifique explicitamente (este deve ser um bug desde que eu segui todas as convenções de nomenclatura).

Então aqui está como vai funcionar: - você tem uma user.php e tag.php modelo - Em user.php, você terá um relacionamento HABTM com o modelo Tag - Nesse array, adicione o campo: 'com' => 'UsersTag' - Faça o mesmo para tag.php

Desta forma, não CakePHP não tem que descobrir o que o nome do modelo é (embora deva ser capaz de)

Outras dicas

O que acontece se você forçar bolo para ecoar a consulta, e você tentar executá-lo manualmente em um cliente mysql? Parece que sua versão local é a criação de uma consulta diferente do que a versão em seu host -. Desde o MySQL está reclamando sobre sintaxe

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top