假设我有两个 Doctrine 实体:
用户和消息
每个用户都可以有 'n' 条消息。
现在我想显示一个用户的邮箱,所以我从 ORM 中获取用户实体,并从这个实体中获取所有消息。到目前为止没有问题。
但现在我想对消息进行一些更复杂的过滤。例如:最大年龄、最大计数、将某些单词列入黑名单等。因此,实体获取消息的默认 getter 方法是不够的。
我该如何解决这个问题?
实体存储库是我发现的第一件事,但是我必须从用户对象外部询问这个存储库,这会破坏用户和消息的关系(repository->getMessagesForUser(userId,...) 而不是 user->getMessages( ...)) 这对我来说看起来不像一个“干净”的 OOP 解决方案。
我能想到的另一种方法是忽略所有这些花哨的 ORM 东西并编写我自己的模型并从最低 ORM 甚至 DBAL 层的数据库中获取信息。以太包裹实体或手动填充我自己模型的字段。但后来我问自己:“我为什么要使用 Doctrine?”。
那么这种情况下的最佳实践是什么。顺便说一句,我使用 Symfony 2。