2010-12-06 4 views
0

Ich habe ein inneres Join-Kriterium erstellt, um eine Liste von Elementen im Backend anzuzeigen.symfony: versuchen, ein Feld aus einem anderen Modell in einer Back-End-Liste hinzuzufügen. Innerer Join

Dies sind meine Modelle:

user: 
    name: { type: varchar(255) } 
    age: { type: integer } 

    article: 
    title:  { type: varchar(255) } 
    content:  { type: varchar(255) } 
    user_id:  { type: varchar(255) } 

und das ist mein generator.yml (ein Teil) des Artikels Modul:

list: 
    peer_method: getArticles 
    display: [title, content, age] 

Und das ist die Methode getArticles():

public static function getArticles() 
{ 
    $con = Propel::getConnection(); 
    $sql = "select * from article LEFT JOIN user ON article.user_id = user.id"; 
    $stmt = $con->prepare($sql);  


    $result = $stmt->execute(); 
    $articles = self::populateObjects($stmt); 

    return $articles; 

} 

Wie Sie sehen können, möchte ich die Spalte anzeigen, die dem Feld "Alter" entspricht, also wenn ich versuche, die Liste der Artikel anzuzeigen ein Fehler, der so etwas wie "Die Methode Articles :: getAge() ist nicht definiert".

Also ich denke, ich sollte die Methode Articles :: getAge() erstellen, aber .. was soll ich innen schreiben? Ein neues Kriterium, das das Benutzerobjekt abruft, das dem Wert des Feldes user_id des Artikels entspricht? Oder liege ich mit anderen Dingen falsch?

sf 1.4/treiben

Grüße

Javi

Antwort

0

Ja:

class Articles 
{ 
    public function getAge() 
    { 
    return $this->getUser()->getAge(); 
    } 
} 

oder ähnlicher Code, um den Wert abzuzurufen auf dem verwandte Modell basiert - ich Lehre verwenden normalerweise, aber von meiner dunstigen Propel-Erinnerung denke ich, dass das oben genannte funktionieren sollte :-)

Verwandte Themen