Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony SonataAdminBundle预加载SQL对象_Symfony_Doctrine_Sonata Admin - Fatal编程技术网

Symfony SonataAdminBundle预加载SQL对象

Symfony SonataAdminBundle预加载SQL对象,symfony,doctrine,sonata-admin,Symfony,Doctrine,Sonata Admin,在使用SonatAdminBundle时,我试图可视化数据库的叶节点。我的表格是A->B->C(->=包含一些)。我试图可视化的叶节点是C C有一个uuuToString(),它将调用B.uuuToString(),后者依次调用a.uuuuToString() 问题是:我最后显示了30行,并向数据库打了700个电话 有时,我可以通过添加一个过滤器来避免这个问题,因此它会首先向过滤器发出请求,并“预加载”一些对象,但在这种情况下,我无法添加这样的过滤器 有没有办法预先加载我的对象?答案可能包含两个

在使用SonatAdminBundle时,我试图可视化数据库的叶节点。我的表格是A->B->C(->=包含一些)。我试图可视化的叶节点是C

C有一个uuuToString(),它将调用B.uuuToString(),后者依次调用a.uuuuToString()

问题是:我最后显示了30行,并向数据库打了700个电话

有时,我可以通过添加一个过滤器来避免这个问题,因此它会首先向过滤器发出请求,并“预加载”一些对象,但在这种情况下,我无法添加这样的过滤器

有没有办法预先加载我的对象?答案可能包含两个部分:

  • 在奏鸣曲中我应该在哪里做这个
  • 我应该执行什么代码来预加载对象层次结构,从而最大限度地减少对数据库的调用

您应该覆盖方法
createQuery
,您可以在其中放置自定义联接

例如:


这正是我需要的。但是,过滤器也有同样的问题。我应该在哪里运行联接以正确获取筛选器属性?
<?php

namespace Acme\DemoBundle\Admin;

use Sonata\AdminBundle\Admin\Admin;

class CarAdmin extends Admin
{
    public function createQuery($context = 'list')
    {
        $query = parent::createQuery($context);
        $query->leftJoin($query->getRootAlias . '.Model', 'mo');
        $query->leftJoin('mo.Make', 'ma');

        return $query;
    }
}