2010-06-27 18 views
5

Kiedy szukam modelu, który "ma wiele" czegoś innego.Cakephp, zamawianie powiązanych tabel

Na przykład blog ma wiele kategorii.

Podczas wyszukiwania wpisu na blogu z powiązanymi kategoriami, w jaki sposób mogę zamówić powiązane kategorie? Kiedy tablica jest zwracana, ignoruje kolejność w modelu kategorii i domyślnie przyjmuje swoją zwykłą kolejność.

Pozdrawiam.

Odpowiedz

22

Dodatkowo można ustawić kolejność w odniesieniu Twojego modelu.

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

Dziękuję bardzo! – Vicer

0

Można określić atrybut order parametrów metody find. W przeciwnym razie domyślnie ustawi się kolejność dla najwyższego/macierzystego modelu. W twoim przypadku Category.id.

+0

Związane model zamówić samego modelu, gdzie pan dodać, że ona się znaleźć, gdy dostajesz powiązanych „ma wiele "na modelu? – Smickie

+0

Opublikuj kod, którego używasz, aby pobrać dane modelu lub zajrzyj na http://book.cakephp.org/view/1018/find. Wierzę, że chcesz ustawić parametr 'order'. –

+0

Zależność maMany implikuje 2 oddzielne zapytania - po ustawieniu atrybutu order w metodzie find pojawia się błąd, ponieważ skojarzony model nie jest zawarty w pierwotnym zapytaniu, a zatem "nie istnieje". –

3

w CakePHP 3 użycia „sortowania” zamiast „zamówienie”:

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