php - 过滤与 Doctrine 2 中的标准对象的关联

标签 php doctrine-orm doctrine

假设我有一个实体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/

相关文章:

php - cURL 使用 webcal 协议(protocol)的 url

php - 选择最后一个和下一个记录时 Symfony DQL 语法错误

php - Symfony 1.4 Doctrine fixtures加载单个文件?

symfony - 与 Doctrine 联合

php - Doctrine 延迟加载

php - 如何在 PHP 中按值对数组进行排序并保留键?

php - 通过 id 检查 session 是否存在,而不更新 session 的生命周期

php - 学说 : Object of class User could not be converted to string

php - 即使定义了服务,Symfony 事件订阅者也无法工作

php - 在 Elasticsearch php API 中使用多种类型或索引