2014-07-24 2 views
1

J'utilise une requête pour sélectionner des publications par type. Cela a une relation OneToMany/ManyToOne avec Type to Post.Symfony2 - Comment réécrire cette requête de doctrine sans l'instruction leftJoin

Comment puis-je réécrire ceci sans utiliser une instruction leftJoin?

Cette requête fonctionne et reçoit un message par type de titre, mais souhaiterait le réécrire si la jointure n'est pas nécessaire.

requête

public function getPostsByType($type) 
{ 
    return $this->createQueryBuilder('post') 
    ->leftJoin('post.type','type') 
    ->andWhere('type.title = :type') 
    ->setParameter('type', $type) 
    ->orderBy('post.createdAt', 'DESC') 
    ->getQuery() 
    ->getResult(); 
} 

poste

/** 
* @ORM\ManyToOne(targetEntity="Type", inversedBy="posts") 
* @ORM\JoinColumn(name="type_id", referencedColumnName="id") 
*/ 
protected $type; 

Type

/** 
* @ORM\OneToMany(targetEntity="Post", mappedBy="type") 
*/ 
protected $posts; 

Répondre

2

Vous pouvez sélectionner Post par Typeid, comme ceci:

public function getPostsByType($type) 
{ 
    return $this->createQueryBuilder('post') 
    ->where('post.type = :typeId') 
    ->setParameter('typeId', $type->getId()) 
    ->orderBy('post.createdAt', 'DESC') 
    ->getQuery() 
    ->getResult(); 
} 
+0

Parfait merci, pazulx! –

Questions connexes