IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Db PHP Discussion :

Table_Abstract: Récupérer un Rowset avec une Order By sur table jointe


Sujet :

Zend_Db PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2006
    Messages : 28
    Par défaut 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 : 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);
        }
    }
    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 : 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
    ;
    Est-ce possible? Et si oui comment?

  2. #2
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    Je te conseille l'utilisation d'un Zend_Db_Table_Select.

    Quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class TArticle extends Zend_Db_Table_Abstract
    {
        protected $_name = 'articles';
        protected $_primary = 'id';
        protected $_rowClass = 'Article';
     
        public function getByOrderNum($count = null, $offset = null)
        {
            $select = $this->select()
                ->from($this, array('id', 'title')) // indiquer les champs souhaités plutôt qu'un select*
                ->join(array('p' => 'articles_priorities'), 'articles.articles_priority_id = p.id', null)
            return $this->fetchAll($select, array('p.order_num ASC', 'article.date_creation DESC'), $count, $offset);
        }
    }
    J'ai aussi remplacé la méthode statique par une méthode objet...

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/05/2015, 01h38
  2. Réponses: 5
    Dernier message: 19/04/2009, 17h06
  3. Etat avec une case à cocher sur une requête difficile
    Par marcoO dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 10/01/2007, 14h21
  4. [DB2] Problèmes avec une Jointure externe sur des vues
    Par treivse dans le forum Langage SQL
    Réponses: 6
    Dernier message: 11/07/2006, 11h42
  5. Réponses: 2
    Dernier message: 29/03/2004, 13h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo