Table_Abstract: Récupérer un Rowset avec une Order By sur table jointe
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... :()
Code:
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);
}
} |
Ce que j'aimerais, c'est récupérer tous les articles (sous forme d'objets Articles dans un rowset) ordonnés par priorité.
En SQL, ça donnerait un truc dans le genre:
Code:
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
; |
Est-ce possible? Et si oui comment?