您如何在列表中优化Sonata admin进行的数据库查询并编辑视图?
我LeftJoin加入了我使用实体仓库中的querybuilder进行的一些查询,这已经很有帮助,使我的查询从100多个减少到大约22个。
但是其余的查询是通过使用formbuilder和listmapper自动发生的查询。
无论如何,我可以进一步优化这些类的查询吗?我什至不知道在哪里进行查询...我试图覆盖存储库的findBy,findAll方法,但它们似乎使用了类似
$persister = $this->_em->getUnitOfWork()->getEntityPersister($this->_entityName);
return $persister->load($criteria, null, null, array(), 0, 1, $orderBy);
不知道如何将连接语句添加到...
我想这不仅是在奏鸣曲管理员中,而且还包括我在前端使用的查询,这些查询使用内置的EntityRepository find,findAll,findOneBy等功能。
在您的管理类中重写如下createQuery()
方法:
public function createQuery($context = 'list')
{
$query = parent::createQuery($context);
$query
->addSelect(...)
->leftJoin(...) // use $query->getRootAlias() here
;
return $query;
}
对于编辑视图,它有些棘手,因为您需要通过扩展Sonata\AdminBundle\Controller\CRUDController
然后覆盖editAction()
方法来覆盖奏鸣曲控制器。
可以在服务声明的第三个参数中指定控制器名称。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句