2
如何在已給定連接的關聯對象數的DQL實體中過濾?使用DQL只選擇給定數量的關聯對象的實體
例如:
$qb = $this->createQueryBuilder('u');
$qb->where('COUNT(u.moods) > 1');
哪裏u.moods是一個一對多的關係,爲用戶?
如何在已給定連接的關聯對象數的DQL實體中過濾?使用DQL只選擇給定數量的關聯對象的實體
例如:
$qb = $this->createQueryBuilder('u');
$qb->where('COUNT(u.moods) > 1');
哪裏u.moods是一個一對多的關係,爲用戶?
您可以使用此查詢生成器配置。
$qb = $this->createQueryBuilder('u');
$qb
->select(array('u'))
->from('User', 'u')
->innerJoin('u.moods', 'm')
->having(
$qb->expr()->gt(
$qb->expr()->count('m'), 1
)
);
return $qb->getQuery()->getResult();
或者如果你喜歡DQL
$dql = "SELECT u FROM User u JOIN u.moods m HAVING COUNT(m) > 1";
$query = $this->createQuery($dql);
return $query->getResult();
我認爲有兩種方式,一種是僅計算你的ArrayCollection對象數量的關聯對象。或者,您實際上可以查詢關聯的實體(IN())。 – Pradeep