在哪里查询?

时间:2017-12-18 14:43:38

标签: php symfony doctrine-orm

在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中,但是如果是没有结果/执行的查询会怎么样?

根据正确编程的规则,在没有结果/执行的情况下保存查询的位置?

我会在几个地方使用此查询,包括服务。

1 个答案:

答案 0 :(得分:1)

最佳做法是在Entity Repository课程中存储查询。您可以轻松地在控制器中重复使用它或将其注入您的服务。您可以实现不同的方法来返回结果集,Query对象或您需要的任何内容。

JsonSerializer