gpt4 book ai didi

Symfony 最佳实践。查询应该在存储库或服务中吗?

转载 作者:行者123 更新时间:2023-12-03 12:51:32 25 4
gpt4 key购买 nike

我有一个关于 Symfony 2 最佳实践的问题。抱歉,如果它有点模糊和主观。我想我可以将我的问题总结为:

“存储库总是适合查询的地方吗?”。

现在,我将大部分学说查询放在实体存储库中。我的大多数 Controller 操作都会执行典型的操作,例如查询实体或实体集合,根据结果抛出异常或重定向,否则更新一个或多个实体。大多数操作比标准的 ->find、->findBy 等查询更复杂。大多数需要连接。当查询涉及多个实体时,有时我不确定它应该进入哪个存储库。我猜有查询的根实体,但是......有时来自连接实体的数据更重要和相关,所以感觉不对将其放入根实体的存储库中。

这没问题,但我倾向于在我的存储库中得到许多几乎相同但略有不同的查询。想出名字并准确跟踪每个人的工作可能会让人感到困惑和乏味。这些查询中的大多数仅由同一 Controller 中的一两个(通常很少使用) Controller 操作使用。我觉得我的存储库里有太多专门的、很少使用的东西。

似乎除了最简单的 Action 之外的所有 Action 都应该封装在一个对象或服务中。因此,我已经开始直接在服务而不是存储库中进行大量查询。很容易在一个地方查看所有 Action 。这是一个好的做法吗?

最佳答案

您的查询应保存在您的实体中 存储库 而不是在您的 Controller 中能够重复使用他们很容易。

这就是存储库的实际用途。为数据库查询提供可重用的位置。

然而,在某些情况下,可以改进将所有查询保存在存储库中……尤其是在过滤可能需要快速大量查询的情况下。

Benjamin Eberlei(Doctrine 的创建者)认为一个类中有 5 个公共(public)方法是可以的,而 10 个相当大。他最近在他的博客上发表了一篇名为“On Taming Repository Classes in Doctrine”的有趣文章。

我部分喜欢 KnpLabs 在他们的 DoctrineBehaviors 中提供的可过滤存储库特征解决方案。以及。

特性使测试更难,但您可以拥有更清洁、更易于维护的 存储库 ...您应该在哪里保留您的查询。

关于Symfony 最佳实践。查询应该在存储库或服务中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17090311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com