假设我有一个实体Profile
,它与一个Account
实体有关联。我想使用 profileCode = 12345
和 获取配置文件,其中相关的 Account
的电子邮件地址为 my@email。 com
。因此,我需要为两个实体指定一个条件。
为此,我创建了一个自定义存储库 Repository\Profile
,现在我想知道如何实现它。我知道我可以使用“原始”DQL 查询或使用查询生成器来解决所有这些问题。但是,我觉得它并没有我想要的那么漂亮,因为它非常接近原始 SQL。当然语法有点不同,但从概念上讲,我会更多地考虑 SQL 而不是 OOP。我会经常做这类事情,所以我真的在努力以最好的方式去做。
我已经对 Criteria
对象做了一些阅读(文档很少),只要我在单个实体上过滤,它看起来真的很棒。在对关联实体进行过滤时,我无法找到使用 Criteria
的任何解决方案。
所以基本上我的问题是:有没有什么方法可以使用 Criteria
对象直接从数据库和自定义存储库中过滤多个实体?我真的更喜欢在自定义存储库中对此进行编码,而不是实体本身,正如我看到有些人所做的那样。这可能吗,或者是否有任何好的替代方案,或者纯 DQL 或查询构建器真的是可行的方法吗?
最佳答案
Criteria 只能过滤实体本身的关联,但如果我理解你的用例,你需要过滤 2 层深,所以它不起作用。
您正试图通过按“您的方式”做事来将 Doctrine 塑造成某种不存在的东西。从长远来看,这只会伤害你。解决方案已经存在,使用 DQL 非常好,尤其是在存储库中。
关于php - 过滤与 Doctrine 2 中的标准对象的关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22671627/