Domanda

Ho posto questa domanda al gruppo google CakePHP ma non ho trovato alcuna soluzione, quindi spero che qui abbia più fortuna.

Ho sviluppato CakePHP per un po 'e ho deciso di avere un versione localhost su MAMP in modo da poter provare la mia app alle persone senza dipendere da una connessione Internet.

Abbiamo un paio di complesse query MySQL in fase di elaborazione e utilizzo

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

Li abbiamo inseriti nei modelli appropriati all'interno di una funzione per rimuovere tutta questa logica dal controller. Quindi dal controller avremo qualcosa del genere

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

, che va su user.php modella ed esegue quella funzione. Questo funziona bene sul nostro live e dev siti, ma per qualche motivo su MAMP ricevo un errore ogni volta che viene fatto questo tipo di chiamata, come esempio di una delle chiamate:

Errore:

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]

Contesto:

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 riga 88 su webroot è questa: $ Dispatcher- > dispatch ($ url);

Ho provato sia 1.2 che 1.2.5 di CakePHP. MySQL su MAMP è 5.1.31 e sul mio host MediaTemple è 5.1.26-rc

Grazie per l'aiuto

È stato utile?

Soluzione 2

Trovato una soluzione. Non ha nulla a che fare con MAMP, infatti alla fine abbiamo trovato questo bug sul nostro server di sviluppo, ma non sul nostro server live.

Fondamentalmente, i core di Cake erano diversi su entrambi i server - ma assolutamente (uno era RC, l'altro era il finale). Il più vecchio era in grado di interpretare la relazione del modello HABTM, ma i core più recenti non lo fanno a meno che non li specifichi esplicitamente (questo deve essere un bug poiché ho seguito tutte le convenzioni di denominazione).

Quindi ecco come funzionerà: - hai un modello user.php e tag.php - In user.php, avrai una relazione HABTM con il modello Tag - In quell'array, aggiungi il campo: 'with' = > 'UsersTag' - Fai lo stesso per tag.php

In questo modo CakePHP non deve capire qual è il nome del modello (anche se dovrebbe essere in grado di farlo)

Altri suggerimenti

Cosa succede se si forza la torta a fare eco alla query e si tenta di eseguirla manualmente in un client mySQL? Sembra che la tua versione locale stia creando una query diversa rispetto alla versione sul tuo host, poiché mySQL si lamenta della sintassi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top