2010-06-27 14 views
5

Quando cerco un modello che "ha molti" di qualcos'altro.Cakephp, ordinamento tabelle associate

Ad esempio un post di blog ha molte categorie.

Durante la ricerca di post di blog con categorie associate, come si ordinano le categorie associate? Quando viene restituito l'array, ignora l'ordine sul modello di categoria e il default è il solito ordine di identificazione.

Cheers.

risposta

22

Inoltre, è possibile impostare l'ordine in relazione del modello.

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

Grazie mille! – Vicer

0

È possibile specificare l'attributo order dei parametri del metodo find. In caso contrario, per impostazione predefinita verrà eseguito l'ordine per il modello principale/principale. Nel tuo caso lo Category.id.

+0

Il modello associato viene ordinata sul modello stesso, in cui si fa ad aggiungere la la la scoperta quando il farsi associati 'ha molti 'su una modella? – Smickie

+0

Inserisci il codice che stai utilizzando per recuperare i dati del tuo modello o dai un'occhiata a http://book.cakephp.org/view/1018/find. Credo che tu voglia impostare il parametro 'order'. –

+0

Una relazione hasMany implica 2 query separate: quando si imposta l'attributo ordine sul metodo find, viene visualizzato un errore perché il modello associato non è incluso nella query originale e quindi "inesistente". –

3

in CakePHP 3 uso 'tipo' invece di 'ordine':

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