2010-11-17 21 views
0

J'ai deux entités de doctrine 'Utilisateur' et 'Attribut', montrées ci-dessous. J'ai besoin de construire une requête qui récupérera tous les utilisateurs et les classera par nom d'attribut où type d'attribut = x. Par exemple, obtenez tous les utilisateurs et commandez-les par "titre".doctrine 2 ordre par tableau associatif

SELECT u FROM User u JOIN u.attributes a ORDER BY a.name {something??} a.type = 'title' 


class User { 

    /** 
    * @ManyToMany (targetEntity="Attribute", inversedBy="users", cascade={"persist"}) 
    * 
    */ 
    private $attributes; 
} 



class Attribute { 

    /** 
    * @Column (type="string", length=255, unique=false, nullable=false, name="name") 
    * @FormElement (type="text") 
    * @type string 
    */ 
    protected $name; 

    /** 
    * @Column (type="string", unique=false, nullable=true, name="type") 
    * @type string 
    */ 
    private $type; 

    /** 
    * @Column (type="integer", length=11, unique=false, nullable=true, name="priority") 
    * @type integer 
    */ 
    private $priority; 

    /** 
    * @ManyToMany (targetEntity="User", mappedBy="attributes") 
    */ 
    private $users; 

} 

Répondre

0

Je pense que cette question est ce que vous cherchez:

SELECT u FROM User u JOIN u.attributes a WHERE a.type = 'title' ORDER BY a.name ASC 
+0

qui ne reviendra pas tous les utilisateurs. Cela ne retournera que les utilisateurs qui ont un attribut de type 'title'. Disons que vous avez trois utilisateurs: John, Ringo, Paul. John a un attribut avec le type 'title' et le nom 'writer', ringo: tapez 'title' et le nom 'batteur' et paul n'a pas de titre. Maintenant, le spectacle show show, dans l'ordre, ringo (batteur), john (écrivain), paul (nul) – waigani

+0

Salut waigani, avez-vous essayé un LEFT JOIN? CHOISIR DE L'UTILISATEUR u LEFT JOIN a.attribue un a.type = 'title' ORDER BY a.name ASC – saadtazi