Le titre ce se post ne doit pas être très clair mais je vais tenter de l'éclaircir.
J'ai deux objets "Zend_Db_Table_Abstract" liés : TArticle et TArticlesPriority
Au niveau de la modélisation de ma base de donnée, un Article a une Priorité. Une Priorité peut être affectée à plusieurs Articles.
En PHP, mon implémentation résemble à ça.
(Le code ci-dessous ne fonctionne pas mais c'est pour vous montrer l'idée. J'ai essayé plusieurs manière, plus réalistes que ci-dessous, mais sans succès...)
Ce que j'aimerais, c'est récupérer tous les articles (sous forme d'objets Articles dans un rowset) ordonnés par priorité.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 class TArticle extends Zend_Db_Table_Abstract { protected $_name = 'articles'; protected $_primary = 'id'; protected $_rowClass = 'Article'; protected $_referenceMap = array( 'ArticlesPriority' => array( 'columns' => 'articles_priority_id', 'refTableClass' => 'TArticlesPriority' ) ); public static function findByTitle($title, $count = NULL, $offset = 0) { $article = new TArticle(); return $user->fetchAll('actived = 0', 'pseudo', $limit, $offset) -> order(array('articles_priorities.order_num ASC', 'article.date_creation DESC'))-> limit($limit, $offset); } }
En SQL, ça donnerait un truc dans le genre:
Est-ce possible? Et si oui comment?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT a . * FROM articles a INNER JOIN articles_priorities p ON a.articles_priority_id = p.id ORDER BY p.order_num LIMIT 0 , 10 ;
Partager