symfony - 更新存储库中的字段
问题描述
我正在我的 Symfony 4 应用程序(命令)中创建一个 CRON 来存档超过 60 天的新闻。这应该怎么做?
我的第一直觉是向我添加一个方法来NewsRepository
检索所有需要存档的新闻,isArchived
如果是这种情况,将它们的布尔方法从 false 更新为 true。
然后,我有了一个想法,即在存储库中添加用于归档新闻的逻辑,以便它可以在命令之外使用。我还可以将逻辑(MySQL 更新)放入命令中,然后在存储库中使用“查找”查询。
这些方法中哪一种更可取,为什么?我的存储库方法应该findNewsToArchive
在命令中执行更新逻辑,还是应该archiveAllNewsThatNeedsToBeArchived
在存储库中执行所有逻辑?
解决方案
在命令中使用所有逻辑对于您的情况来说是一种不好的做法,从技术上讲,您有两个独立的东西查找/存档,如果我是您,我将使用具有两个功能的存储库findNews(array $criteria): array
,archive(array $news): void
一个会根据您的标准(60 天......)找到新闻,另一个功能会将它们存档。您可以随意重复使用它们,并且易于维护。您的命令将仅使用这两个功能根据您的条件查找和存档
推荐阅读
- javascript - HTML 输入元素上的“必需”属性需要什么才能起作用?
- scrapy - 只显示蜘蛛的日志输出?
- spring-boot - 使用 Spring 数据 JPA 中的临时列进行排序
- python - 如何将 Pytorch (+ cuda) 与 A100 GPU 一起使用?
- python - 使用 reticulate 将一段简单的 python 代码翻译成 R
- list - 加入字典列表
- ubuntu - 使用通配符 '%' 无法查看来自任何主机的用户授权
- sql - 从表中删除时变异表触发错误
- python-3.x - PythonSelenium 3.x 隐式和显式等待不处理前 2 个文本字段元素,部分适用于第三个文本字段元素
- javascript - 通过 unicode 缩小 javascript