我正在開發一個symfony 3的應用程序,我想用查詢生成器創建一個自定義查詢。
我有一個實體名稱:Bien有很多地址(地址是另一個實體)。所以我想讓所有不在布恩實體中存在的地址。用symfony中的querybuilder創建一個特定的查詢
,我要生成查詢是:select a.id from address a where a.id not in (select b.address_id from bien b)
在我AddressRepository我這樣做:
public function getAdressesByRueNotJoined($rue)
{
$qb2 = $this->createQueryBuilder('ab')
->from('BienBundle:Bien', 'bi');
$qb = $this->createQueryBuilder('a');
return
$qb->where('a.rue = :rue')
->setParameter('rue', $rue)
->andWhere(
$qb->expr()->notIn('a', $qb2->getDQL())
)
->getQuery()
->getResult();
}
返回的查詢是:
選擇a0_.id AS ID_0 ,a0_.name AS name_1,a0_.rue_id AS rue_id_2 FROM adresse a0_ WHERE a0_.rue_id =?和a0_.id NOT IN(SELECT a1_.id FROM 住址a1_,邊b2_)
我該如何解決呢?
我建議你看看Mawcel的答案,以瞭解你如何構建你的查詢。嘗試將其查詢與來自doctrine文檔的'notIn()'條件混合:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/query-builder.html。 –