2014-07-24 38 views
1

我正在使用查詢來按類型選擇文章。這與要發佈的類型具有OneToMany/ManyToOne關係。Symfony2 - 如何在不留下左連接語句的情況下重寫此教義查詢

如何在不使用leftJoin語句的情況下重寫?

此查詢的工作原理是按類型標題獲取帖子,但如果連接不是必需的,則希望重新編寫它。

查詢

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(); 
} 

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

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

回答

2

您可以通過Typeid選擇Post,像這樣:

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

完美謝謝你,pazulx! –

相關問題