2010-06-27 3 views
5

Wenn ich ein Modell suche, das "viel" von etwas anderem hat.CakePHP, zugehörige Tabellen bestellen

Zum Beispiel hat ein Blog-Post viele Kategorien.

Bei der Suche nach Blog-Post mit Kategorien zugeordnet, wie bestelle ich die zugehörigen Kategorien? Wenn das Array zurückgegeben wird, ignoriert es die Reihenfolge im Kategoriemodell und verwendet standardmäßig die ID-Reihenfolge.

Prost.

Antwort

22

Zusätzlich können Sie die Reihenfolge in Ihrem Modell der Beziehung gesetzt.

<?php 
class Post extends AppModel { 
    var $hasMany = array(
    'Category' => array(
     'className' => 'Category', 
     ... 
     'order' => 'Category.name DESC', 
     .... 
    ), 
}?> 
+0

Vielen Dank! – Vicer

0

Sie können das order Attribut der find Methodenparameter angeben. Andernfalls wird standardmäßig die Reihenfolge für das oberste/übergeordnete Modell verwendet. In Ihrem Fall die Category.id.

+0

Das zugehörige Modell auf dem Modell bestellt selbst, wo fügen Sie den finden es, wenn Ihr zugeordnet bekommen ‚hat viele 'auf einem Modell? – Smickie

+0

Geben Sie den Code ein, den Sie zum Abrufen Ihrer Modelldaten verwenden, oder werfen Sie einen Blick auf http://book.cakephp.org/view/1018/find. Ich glaube, dass Sie den Parameter 'order' einstellen möchten. –

+0

Eine hasMany-Beziehung impliziert zwei separate Abfragen - wenn Sie das Attribut order für die Methode find setzen, erhalten Sie einen Fehler, weil das zugehörige Modell nicht in der ursprünglichen Abfrage enthalten ist und daher nicht existiert. –

3

in cakephp 3 use ‚Art‘ statt ‚bestellen‘:

<?php 
class Post extends AppModel { 
    var $hasMany = array(
    'Category' => array(
     'className' => 'Category', 
     ... 
     'sort' => 'Category.name DESC', 
     .... 
    ), 
}?>