首页 > 解决方案 > 更新存储库中的字段

问题描述

我正在我的 Symfony 4 应用程序(命令)中创建一个 CRON 来存档超过 60 天的新闻。这应该怎么做?

我的第一直觉是向我添加一个方法来NewsRepository检索所有需要存档的新闻,isArchived如果是这种情况,将它们的布尔方法从 false 更新为 true。

然后,我有了一个想法,即在存储库中添加用于归档新闻的逻辑,以便它可以在命令之外使用。我还可以将逻辑(MySQL 更新)放入命令中,然后在存储库中使用“查找”查询。

这些方法中哪一种更可取,为什么?我的存储库方法应该findNewsToArchive在命令中执行更新逻辑,还是应该archiveAllNewsThatNeedsToBeArchived在存储库中执行所有逻辑?

标签: symfonysymfony4

解决方案


在命令中使用所有逻辑对于您的情况来说是一种不好的做法,从技术上讲,您有两个独立的东西查找/存档,如果我是您,我将使用具有两个功能的存储库findNews(array $criteria): arrayarchive(array $news): void

一个会根据您的标准(60 天......)找到新闻,另一个功能会将它们存档。您可以随意重复使用它们,并且易于维护。您的命令将仅使用这两个功能根据您的条件查找和存档


推荐阅读