PHP:Doctrine& twig,为连接执行了许多查询

时间:2017-12-11 07:25:34

标签: symfony doctrine-orm twig

我最近开始使用Silex,Doctrine和Twig重建旧的PHP应用程序。

其中一个主要实体是“问题”(这是一个问题跟踪系统),该问题与许多其他实体有关系,如“状态”,“所有者”,“创建者”等。 我已经将所有实体创建为doctrime ORM实体并定义了所有关系。

从控制器中,我获取一个“问题”并将其发送到树枝模板,如下所示:

$issue = $app['orm.em']->getRepository('MMW\Entity\Issue')->find($issueId);

在twig模板中,我可以轻松打印出相关的实体,例如:

{{ issue.status.name }}

{{ issue.owner.name }}

它就像一个魅力,但当我启用日志记录以查看发送到数据库的查询时,如下所示:

$em->getConnection()
  ->getConfiguration()
  ->setSQLLogger(new \Doctrine\DBAL\Logging\EchoSQLLogger());

我注意到,对于每个连接,都会向数据库发送一个单独的查询。我认为性能明智,一个SQL连接查询会快得多。

我应该以不同的方式构建我的应用程序,也许使用控制器中的querybuilder来获取我需要的确切列和实体?或者有没有办法强制学说以不同的方式构建查询?

或者我应该不担心它并保持原样......?

1 个答案:

答案 0 :(得分:0)

您应该使用Doctrine fetch join来获取整个实体,并阻止这种方式访问​​每个字段。我建议您阅读Doctrine文档:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#joins