Question

J'ai deux tables, les pages et les messages qui sont en HABTM et sont reliés à l'aide pages_posts table de jointure.

modèle Ma page ainsi que la définition HABTM contient une fonction ..

class Page extends AppModel
{
   var $name = "Page";
   ......
   ......
   function callthis()
   {
     return $this->find('all');;
   }
}

De mon contrôleur messages, je suis en train d'appeler cette fonction ..

class PostsController extends AppController
{
    ....
    ....
    function index()
    {
      $returned = $this->Post->Page->callthis();
    }
}

Il en résulte

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]

autre sortie de débogage:

code

        $out = null;
        if ($error) {
            trigger_error('<span style="color:Red;text-align:left"><b>' . __('SQL Error:', true) . "</b> {$this->error}</span>", E_USER_WARNING);

Contexte

$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

Appels

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

Appel d'une fonction de modèle associé devrait être possible en droit CakePHP? Si nous votre commande http://book.cakephp.org/view/1044/hasAndBelongsToMany-HABTM , nous pouvons voir que

$this->Recipe->Tag->find('all', array('conditions'=>array('Tag.name'=>'Dessert')));

Quand find () fonction du modèle Tag peut être appelé à partir contrôleur les recettes associées, la fonction de la page modèle Pourquoi ne puis-je appeler callthis () du contrôleur Messages associés?

Était-ce utile?

La solution 2

Comme Stefan et Moreno ont souligné, il y avait effectivement un problème avec mes relations.

Selon http://book.cakephp.org/view/1114/Plugin -Modèles , Si nous avons besoin de faire référence à un modèle au sein de votre plug-in, il faut inclure le nom du plug-in avec le nom du modèle, séparés par un point.

Je référencé les modèles sans utiliser Plugin.Model comme className. Merci à tous pour votre temps ..

Autres conseils

Le problème est le plus probable dans vos relations. Je betch si vous faites

$this->Post->Page->find('all');

vous aurez toujours des erreurs.

Assurez-vous que le modèle est chargé dans la page PostsController (doit être proche du haut du fichier du contrôleur, avant toutes les fonctions):

var $uses = array('Post', 'Page');

Ensuite, vous devriez être en mesure d'appeler simplement

$this->Page->callthis();

Hey j'ai eu le même problème.

J'ai ajouté le PluginName.ModelName, il est résolu. Ainsi, l'ajout d'un PluginName devant le modèle de plug-in est très bonne pratique,

Merci, Vijay

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top