是否可以在configureListFields中的sonataadmin中进行自定义查询?
在这个函数中:
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->>add(....
;
}
答案 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函数中的第三个参数是一个布尔值,用于选择追加或替换查询部分。