cron运行

12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
——/ src /仓库/ CommentRepository.php+ + + b / src /仓库/ CommentRepository.php@@ -6,6 +6,7 @@使用App\Entity\Comment;使用App \实体\会议;使用原则\ \ DoctrineBundle \ Repository \ ServiceEntityRepository捆绑销售;使用原则\ \ ManagerRegistry持久性;+使用原则\ ORM \ QueryBuilder;使用原则\ ORM工具\ \分页\ Paginator;/** @@ -16,6 +17,8 @@使用Doctrine\ORM\Tools\Pagination\Paginator;*/ class CommentRepository扩展ServiceEntityRepository {+ private const days_before_rejected_remove = 7;+PAGINATOR_PER_PAGE = 2;公共函数__construct(ManagerRegistry $registry) @@ -23,6 +26,29 @@ class CommentRepository extends ServiceEntityRepository parent::__construct($registry, Comment::class);}+公共函数countoldreject (): int+ {+返回$this->getOldRejectedQueryBuilder()->select('COUNT(c.id)')->getQuery()->getSingleScalarResult();+}++公共函数deleteoldreject (): int+ {+返回$this->getOldRejectedQueryBuilder()->delete()->getQuery()->execute();+}++私有函数getOldRejectedQueryBuilder(): QueryBuilder+ {+返回$this->createQueryBuilder('c')+ - >引入(c。State =:state_rejected or c.state =:state_spam')+ - >引入(c。createdAt <:date')+ - > setParameters ([+ 'state_rejected' => 'rejected',+ 'state_spam' => 'spam',+ 'date' => new \DateTimeImmutable(-self::DAYS_BEFORE_REJECTED_REMOVAL。“天”),+))+;+}+getCommentPaginator(Conference $ Conference, int $offset): Paginator {$query = $this->createQueryBuilder('c')

提示

对于更复杂的查询,有时查看生成的SQL语句是有用的(它们可以在日志和Web请求的分析器中找到)。

应用:评论:清理通过创建src /命令/ CommentCleanupCommand.php文件:

src /命令/ CommentCleanupCommand.php
12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 46 47
名称空间应用程序命令使用应用程序存储库CommentRepository使用ob娱乐下载组件控制台命令命令使用ob娱乐下载组件控制台输入InputInterface使用ob娱乐下载组件控制台输入InputOption使用ob娱乐下载组件控制台输出OutputInterface使用ob娱乐下载组件控制台风格ob娱乐下载SymfonyStyleCommentCleanupCommand扩展命令私人commentRepository受保护的静态defaultName应用:评论:清理的公共函数__construct(CommentRepositorycommentRepository->commentRepository =commentRepository::__construct ();}受保护的函数配置()->setDescription (从数据库中删除拒绝和垃圾评论->使用addOption (“管制”, InputOption::VALUE_NONE,“演习”);}受保护的函数执行(InputInterface输入, OutputInterface输出intioob娱乐下载SymfonyStyle (输入输出);如果输入->getOption (“管制”)) {io->注意(“启用干模式”);->commentRepository->countOldRejected ();}其他的->commentRepository->deleteOldRejected ();}io->成功(sprintf (删除“%d”旧的被拒绝/垃圾评论));返回0;}}

所有应用程序命令都与Symfony内置命令一起注册,并且都可以通过ob娱乐下载ob娱乐下载symfony控制台.由于可用命令的数量可能很大,因此应该对它们命名空间。根据约定,应用程序命令应该存储在应用程序名称空间。添加任意数量的子名称空间,用冒号().

命令获取输入(参数和选项传递给命令),您可以使用输出写入控制台。

执行以下命令清理数据库:

1
ob娱乐下载Symfony控制台应用:注释:清理

此工作,包括代码示例,是根据知识共享协议BY-NC-SA 4.0许可证。