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?

È stato utile?

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

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