过滤与Doctrine 2中的条件对象关联

And*_*708 5 php doctrine doctrine-orm

假设我有一个与实体Profile有关联的Account实体.我想,以获取配置文件profileCode = 12345 ,并在那里其相关Account拥有的E-mail地址my@email.com.所以,我需要在两个实体上指定一个条件.

为此我创建了一个自定义存储库Repository\Profile,现在我想知道如何实现它.我知道我可以使用"原始"DQL查询或使用查询构建器来解决所有这些问题.但是,我觉得它不像我想的那样漂亮,因为它非常接近原始SQL.当然语法有点不同,但从概念上讲,我会在SQL方面考虑更多,而不是OOP.我会做很多这样的事情,所以我真的想以最好的方式去做.

我已经对Criteria对象做了一些阅读(文档稀疏),只要我在单个实体上进行过滤,它看起来真的很棒.Criteria在关联实体上进行过滤时,我无法找到任何解决方案.

所以基本上我的问题是:有没有什么方法可以Criteria直接从数据库和自定义存储库中使用对象来过滤多个实体?我真的更喜欢在自定义存储库中编码,而不是实体本身,就像我看到的一些人那样.这是可能的,还是有任何好的选择,或者是普通的DQL还是查询构建器真的要走的路?

K. *_*ert 1

Criteria只能过滤实体本身的关联,但如果我理解你的用例,你需要过滤2层深度,所以它不起作用。

你试图通过想要“按照你的方式”做事来将教义塑造成一些不符合教义的东西。从长远来看,这只会伤害你。解决方案已经存在,使用 DQL 完全没问题,尤其是在存储库中。