Sonata Admin configureListFields

时间:2013-10-06 17:38:02

标签: symfony sonata-admin

是否可以在configureListFields中的sonataadmin中进行自定义查询?

在这个函数中:

protected function configureListFields(ListMapper $listMapper) { $listMapper ->>add(.... ; }

谢谢你!

2 个答案:

答案 0 :(得分:1)

您应该覆盖createQuery这样的方法(source):

public function createQuery($context = 'list') 
{ 
    $query = parent::createQuery($context); 
    // this is the queryproxy, you can call anything you could call on the doctrine orm QueryBuilder 
    $query->andWhere( 
        $query->expr()->eq($query->getRootAlias().'.username', ':username') 
    ); 
    $query->setParameter('username', 'test'); // eg get from security context 
    return $query; 
} 

AFAIK,您无法更改SELECT部分查询,也无法使用GROUP BY,因为内部Sonata至少运行此查询两次。首先,它检查查询返回的行数。其次,它运行此查询分页。

答案 1 :(得分:0)

正如Tautrimas所说,您可以覆盖管理类中的createQuery($context = 'list')功能。

您可以尝试更改查询的SELECT部分​​,如下所示:

$query = parent::createQuery($context);
$query->add('select', 'm', false );
$query->add('from', 'Toto\MyBundle\Entity\MyEntity m', false );

add函数中的第三个参数是一个布尔值,用于选择追加或替换查询部分。