Frage

Ich habe zwei Tabellen, Seiten und Beiträge, die in HABTM sind und verbunden sind pages_posts Join-Tabelle verwendet wird.

Meine Seite Modell zusammen mit der HABTM Definition enthält eine Funktion ..

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

Von meinen Beiträgen Controller, ich versuche, diese Funktion zu nennen ..

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

Diese Ergebnisse 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]

Weitere Debug-Ausgabe:

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);

Kontext

$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

Anrufe

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

eine zugeordnete Modellfunktion aufrufen sollte in CakePHP Recht möglich sein? Wenn wir Kasse http://book.cakephp.org/view/1044/hasAndBelongsToMany-HABTM , können wir sehen, dass

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

Wenn find () Funktion von Tag-Modell kann aus assoziierten Rezepte Controller aufgerufen werden, Warum kann ich nicht nennen callthis () Funktion der Seite Modell aus assoziierten Beiträge Controller?

War es hilfreich?

Lösung 2

Wie Stefan und Moreno zeigten, war es in der Tat ein Problem mit meinen Beziehungen.

Nach http://book.cakephp.org/view/1114/Plugin -Modelle Wenn wir ein Modell in Ihrem Plugin verweisen müssen, benötigen wir den Namen des Plugins mit dem Modellnamen enthalten, die mit einem Punkt getrennt sind.

I verwiesen, die Modelle direkt ohne Plugin.Model als Klassenname verwendet wird. Vielen Dank allen für Ihre Zeit ..

Andere Tipps

Das Problem ist höchstwahrscheinlich in Ihren Beziehungen. Ich betch wenn Sie das tun

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

Sie werden immer noch Fehlermeldungen erhalten.

Stellen Sie sicher, dass die Seite Modell wird in den Posts geladen (soll in der Nähe der Oberseite der Controllers Datei sein, bevor alle Funktionen):

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

Dann sollten Sie in der Lage sein, nur Anruf

$this->Page->callthis();

Hey, ich hatte das gleiche Problem.

Ich habe die PluginName.ModelName hinzugefügt, dann wird es aufgelöst. So das Hinzufügen einer Plugin vor dem Plugin-Modell ist eine sehr gute Übung,

Danke, Vijay

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top