CakePHP - Chiamare una funzione modello in un HABTM
-
26-09-2019 - |
Domanda
Ho due tabelle, pagine e post che sono in HABTM e sono unite utilizzando pages_posts unirsi a tavola.
La mia pagina modello con la definizione HABTM contiene una funzione ..
class Page extends AppModel
{
var $name = "Page";
......
......
function callthis()
{
return $this->find('all');;
}
}
Dal mio controller messaggi, sto cercando di chiamare tale funzione ..
class PostsController extends AppController
{
....
....
function index()
{
$returned = $this->Post->Page->callthis();
}
}
Questo si traduce in
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 'threadedpages' at line 1 [CORE/cake/libs/model/datasources/dbo_source.php, line 681]
Per ulteriori output di debug:
Codice
$out = null;
if ($error) {
trigger_error('<span style="color:Red;text-align:left"><b>' . __('SQL Error:', true) . "</b> {$this->error}</span>", E_USER_WARNING);
Contesto
$sql = "threadedpages"
$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 'threadedpages' at line 1"
$out = null
Chiamate
DboSource::showQuery() - CORE/cake/libs/model/datasources/dbo_source.php, line 681
DboSource::execute() - CORE/cake/libs/model/datasources/dbo_source.php, line 266
DboSource::fetchAll() - CORE/cake/libs/model/datasources/dbo_source.php, line 410
DboSource::query() - CORE/cake/libs/model/datasources/dbo_source.php, line 364
Model::call__() - CORE/cake/libs/model/model.php, line 502
Overloadable::__call() - CORE/cake/libs/overloadable_php5.php, line 50
AppModel::threadedpages() - [internal], line ??
PostsController::admin_index() - CORE/plugins/cakey/controllers/posts_controller.php, line 11
Dispatcher::_invoke() - CORE/cake/dispatcher.php, line 204
Dispatcher::dispatch() - CORE/cake/dispatcher.php, line 171
[main] - APP/webroot/index.php, line 83
La chiamata di una funzione modello associato dovrebbe essere possibile in CakePHP giusto? Se noi checkout http://book.cakephp.org/view/1044/hasAndBelongsToMany-HABTM , possiamo vedere che
$this->Recipe->Tag->find('all', array('conditions'=>array('Tag.name'=>'Dessert')));
Quando find () funzione del modello di tag può essere chiamato dal regolatore Ricette associato, Perché non posso chiamare callthis () funzione del modello di pagina dal regolatore messaggi associati?
Soluzione 2
Mentre Stefan e Moreno ha sottolineato, v'è stato effettivamente un problema con le mie relazioni.
http://book.cakephp.org/view/1114/Plugin -Modelli , se abbiamo bisogno di fare riferimento a un modello all'interno il plugin, abbiamo bisogno di includere il nome del plugin con il nome del modello, separati da un punto.
I riferimento i modelli direttamente senza utilizzare Plugin.Model come className. Grazie a tutti per il vostro tempo ..
Altri suggerimenti
Il problema è più probabile nei vostri rapporti. Mi betch se si fa
$this->Post->Page->find('all');
Ci si può comunque errori.
Assicurarsi che il modello di pagina viene caricata nel PostsController (dovrebbe essere vicino alla parte superiore del file di controllo, prima di qualsiasi funzione):
var $uses = array('Post', 'Page');
Poi si dovrebbe essere in grado di basta chiamare
$this->Page->callthis();
Hey Ho avuto lo stesso problema.
Ho aggiunto il PluginName.ModelName, allora è risolto. Così l'aggiunta di un pluginName di fronte al modello di plugin è molto buona pratica,
Grazie, Vijay