1

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

在这个函数中:

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

谢谢你 !

4

2 回答 2

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 至少运行此查询两次。首先,它检查查询返回的行数。其次,它分页运行这个查询。

于 2013-10-06T21:01:17.700 回答
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 函数中的第三个参数是一个布尔值,用于选择追加或替换查询部分。

于 2014-05-20T15:44:08.663 回答