2016-07-24 12 views
0

Ich habe ein Blog, dass Benutzer sie mögen und kommentieren können. Für die Aktion "Blogansicht" liste ich alle Kommentare für diesen Blogeintrag auf. Bis jetzt bin ich in der Lage, alle Kommentare aufzulisten, aber ich möchte auch den Benutzernamen anzeigen, leider habe ich nur die User_id im Comment-Objekt. Was soll ich machen? Ich habe bereits versucht, aus rekursiven = 2.CakePHP mit tieferen Assoziationen

Here is a trace of the variable:

Es gibt einen Fehler Model "Rmcomment" ist nicht mit dem Modell "User" [APP/Lieferant/cakephp/cakephp/lib/Kuchen/Model/Verhalten assoziiert /ContainableBehavior.php, Zeile 342], während nur die letzte Ebene der Abfrage nicht funktioniert

+0

Wenn Sie etwas versucht, bitte zeigen, was Sie in einer reproduzierbaren Art und Weise versucht haben, als 'rekursive = 2' definitiv, dass die Assoziation enthalten sollte. Das gesagt: ** http: //stackoverflow.com/questions/29442675/containable-and-deep-associated-data** – ndm

+0

Veröffentlichen Sie die Abfrage, die Sie derzeit verwenden, um das 'blog' Array zu generieren. Sie sollten statt 'rekursive = 2' als äußerst effizient ist –

+0

meine Aktion ist public function Ansicht ($ id = null) {\t \t $ this-> Blog-> rekursive = 2 mit' containable' werden; \t \t if (! $ This-> Blog-> existiert ($ id)) { \t \t throw new NotFoundException (__ d ('croogo', 'Ungültige% s', __d ('rm', 'Blog'))); \t} \t $ options = array ('konditionen' => array ('Blog.'. $ This-> Blog-> primaryKey => $ id)); \t \t \t $ this-> set ('blog', $ this-> Blog-> finden ('first', $ options)); } – benone

Antwort

0

Ello, Kumpel. Versuchen Sie, die Joins auf Ihre Abfrage zu verwenden.

$this->Rmcomment->find('all', array(
'joins' => array(
     array(
     'table' => {{ya users table name}}, 
     'alias' => 'User', 
     'type' => 'LEFT', 
     'conditions' => array('User.id = Rmcomment.user_id') 
    ), 
    'fields' => array(
    'Rmcomment.something', 
    'Rmcomment.somethingelse', 
    'User.name' //Here comes your name from users table using the user_id from comments 
    ), 
    'group' => 'Rmcomment.id' 
) 
) 
); 

Es zurückkehren sollte:

array(
    array(
     'Rmcomment' => array(
      '!fields from Rmcomment!' 
     ), 
     'User' => array(
      '!fields from User!' 
     ) 
    ), 
    array(
     'Rmcomment' => array(
      '!fields from Rmcomment!' 
     ), 
     'User' => array(
      '!fields from User!' 
     ) 
    )......... 
); 
Verwandte Themen