2010-09-10 22 views
4

Existe-t-il un moyen de trier (ou de trier par) dans ORM en utilisant une valeur provenant d'une table étrangère?Tri par valeur de table étrangère avec Kohana ORM

Pouvez-vous faire quelque chose comme ce qui suit:

ORM::factory("table")->order_by("table.foregin_table.column" , "ASC") 

Ou vous devez utiliser un MySQL régulier et rejoindre les tables ensemble vieille école?

+1

'orm :: factory (" table ") -> avec (" table2 ") -> order_by (" table2.column "," ASC ")' devrait fonctionner (non testé). Avez-vous essayé cela? – biakaveron

Répondre

6

Bien sûr, c'est possible. Par exemple j'ai deux tableaux avec des images et des votes avec une relation à plusieurs. Disons que je veux trier les images par nombre de votes pour obtenir les images les plus populaires. Cela va:

$pictures = ORM::factory('picture') 
    ->select(array('COUNT("picture_votes.id")', 'votes')) 
    ->join('picture_votes','left') 
    ->on('picture_votes.picture_id','=','pictures.id') 
    ->group_by('pictures.id') 
    ->order_by('votes','desc') 
    ->find_all(); 

Cela donnera toutes les images triées par nombre de votes comme résultat.