[英]Convert SQL to Doctrine 2 Query Builder or DQL by using NOT IN?
如何將SQL波紋管轉換為Doctrine 2查詢生成器或DQL?
SELECT tags.*
FROM tags
WHERE tags.id NOT IN (
SELECT tag_id AS totalTags
FROM human_resource_tags
WHERE human_resource_id=1)
標簽實體如下:
HumanResource實體如下:
基本上,我要做的是為一個HumanResource實體沒有的所有Human實體選擇所有Tag實體。
我在這里真的很掙扎,因此我們將不勝感激。
我正在使用Doctrine版本2.4.2。
================================================== ========================
所有人都向FuzzyTree致指點:)
我對其進行了稍微的修改,它的工作方式就像一個魅力:)因此,這將為您提供尚未添加到HumanResource實體的特定HumanResource實體的所有Tag實體:)
所以這是解決方案:
$q = $this->createQueryBuilder('t')
->where('t.name LIKE :name')
->andWhere('NOT EXISTS (
SELECT h
FROM HRAPIBundle:HumanResource h
WHERE h.id = ' . $humanResource->getId() .
'AND h MEMBER of t.human_resources
)')
->setParameter('name', "%".$query."%")
->getQuery();
您可以使用NOT EXISTS
和MEMBER OF
來實現
$qb->select("t")
->from('HardCoreMore\HRAPIBundle\Entity\Tag', 't')
->where('NOT EXISTS (
SELECT 1
FROM HardCoreMore\HRAPIBundle\Entity\HumanResource h
WHERE h.id = 1
AND h MEMBER of t.human_resources
)');
選擇不需要的$hmEntity
,然后使用以下代碼:
$em = $this->getDoctrine()->getManager();
$result= $em->getRepository('HRAPIBundle:Tag')->findByHumanResource(!$hmEntity);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.