大佬教程收集整理的这篇文章主要介绍了php-Symfony 2 / Doctrine:如何在不失去ORM优势的情况下减少查询数量?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用的Symfony 2.7使用Doctrine.我的控制器动作通常如下所示:
# my/namespace/Controller/ItemsController.PHP -> listAction()
$items = $this->get('repository.items')->findAll();
return $this->render('itemsList.html.twig', array('items' => $items));
在我的模板,我喜欢迭代相关实体:
# my/namespace/Resources/views/itemsList.html.twig
{% for item in items %}
Item: {{ item.name }} <br/>
Groups: <br/>
<ul>
{% for group in item.groups %}
<li>{{ group.name }}</li>
{% endfor %}
</ul>
{% endfor %}
这会导致很多SELECT查询,我想避免这些查询.到目前为止,我知道的唯一解决方案是在存储库中收集所有需要的数据并在操作中分配它们,而不是在模板内进行爬网.
我希望像树枝片段中那样保持这种状态.是否有任何智能缓存选项可以检测我的情况并自动优化查询?
提前致谢!
解决方法:
正如其他人所说,您应该在存储库中获取组实体.您可以使用如下形式:
//inside the repository
public function findAllFetchGroups(){
return $this->createQueryBuilder('a')
->addSelect('gs')->join('a.groups', 'gs')
->getQuery()->getResult();
}
以上是大佬教程为你收集整理的php-Symfony 2 / Doctrine:如何在不失去ORM优势的情况下减少查询数量?全部内容,希望文章能够帮你解决php-Symfony 2 / Doctrine:如何在不失去ORM优势的情况下减少查询数量?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。