我有两个与多对多关系相关的表。我试图找到所有没有相关值的行。这是一个例子:
Table 1: Categories
Table 2: CategoryItems
Table 3: Items
我正在尝试找到所有没有相关类别的项目。
如果我用直接的SQL写这个,那就是我要做的:
SELECT *
FROM Items
WHERE Items.item_id not in (SELECT DISTINCT item_id FROM category_items)
这似乎是一个相当简单的要求,但我无法弄清楚如何让Doctrine这样做。
感谢您的任何建议!
答案 0 :(得分:2)
您需要执行此SELECT * FROM items left join category_items on ... where cateogry_items.id is null
之类的查询。在Doctrine中,这意味着:
ItemsTable::getInstance()->createQuery('Items')
->leftJoin('Items.CategoryItems CategoryItems')
->where('CategoryItems.id IS NULL')
->execute()