2010-06-27 9 views
5

Lorsque je recherche un modèle qui "a beaucoup" d'autre chose.Cakephp, commande de tables associées

Par exemple, un article de blog a de nombreuses catégories.

Lorsque vous recherchez un billet de blog avec des catégories associées, comment puis-je commander les catégories associées? Lorsque le tableau est retourné, il ignore l'ordre sur le modèle de catégorie et par défaut son ordre d'id habituel.

Cheers.

Répondre

22

En outre, vous pouvez définir l'ordre dans la relation de votre modèle.

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

Merci beaucoup! – Vicer

0

Vous pouvez spécifier l'attribut order des paramètres de la méthode find. Sinon, l'ordre du modèle supérieur/parent sera défini par défaut. Dans votre cas, le Category.id.

+0

Le modèle associé est commandé sur le modèle lui-même, où vous ajoutez ce le trouver quand votre obtenir associé « a beaucoup 'sur un modèle? – Smickie

+0

Indiquez le code que vous utilisez pour récupérer les données de votre modèle ou consultez http://book.cakephp.org/view/1018/find. Je crois que vous voulez définir le paramètre 'order'. –

+0

Une relation hasMany implique 2 requêtes distinctes - lorsque vous définissez l'attribut order sur la méthode find, vous obtenez une erreur car le modèle associé n'est pas inclus dans la requête d'origine et n'existe donc pas. –

3

dans CakePHP 3 utiliser « sort » au lieu de « l'ordre »:

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