考虑Store
和Location
实体之间的一对多实体关系(一个Store
有许多Location
s)。接下来考虑一个Store
实体有3个Location
s:
Store (id = 1)
locations
(id = 1, opened = true)
(id = 2, opened = true)
(id = 3, opened = false)
在DQL中是否有一种方法可以通过id来获取Store,但要以locations
集合只包含具有条件opened = true
的Location
实体的方式来获取?
目前,我可以通过id获取Store
实体,然后过滤掉我不想要的位置,但我想知道是否有一种方法可以使用Doctrine DQL查询从不从DB中获取不想要的位置,并使用部分水合的位置列表获取Store
实体。谢谢。
1条答案
按热度按时间raogr8fs1#
一个简单的方法是获取所有有打开位置的商店。我没有检查这是否有语法错误:
然后你可以为每个store调用
getLocations()
来获取打开的Location
-s的集合。我假设你在Store
类中有getLocations()
方法。你也可以将关系定义为一对多双向,然后你可以运行DQL查询,类似于这样:
这应该会产生
Location
对象的集合。更多示例:https://www.doctrine-project.org/projects/doctrine-orm/en/2.16/reference/dql-doctrine-query-language.html#joins