【发布时间】:2017-12-18 14:43:38
【问题描述】:
在 ArticleController 我有:
$em = $this->get('doctrine.orm.entity_manager');
$dql = "SELECT a FROM AcmeMainBundle:Article a WHERE a.showing = 1 ORDER BY createdAt DESC";
$query = $em->createQuery($dql);
$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate(
$query, /* query NOT result */
$request->query->getInt('page', 1)/*page number*/,
10/*limit per page*/
);
在 AdminController 我有:
$em = $this->get('doctrine.orm.entity_manager');
$dql = "SELECT a FROM AcmeMainBundle:Article a WHERE a.showing = 1 ORDER BY createdAt DESC";
$query = $em->createQuery($dql);
$results = $query->getResults();
所以我有重复:
$em = $this->get('doctrine.orm.entity_manager');
$dql = "SELECT a FROM AcmeMainBundle:Article a WHERE a.showing = 1 ORDER BY createdAt DESC";
$query = $em->createQuery($dql);
来自数据库的结果应该保存在 Repositorium 中,但是如果是没有结果/执行的查询呢?
根据正确的编程规则,在哪里保留没有结果/执行的查询?
我将在几个地方使用这个查询,包括服务。
【问题讨论】:
-
存储库仍然是他们的好地方。有点相关 - CQRS principle.
-
一般来说 - 您应该将它们保存在 data mappers 中。但是由于您使用的是 Doctrine,所以这不是最可行的选择。所以,它是存储库。
标签: php symfony doctrine-orm