是否可以在 configureListFields 的 sonataadmin 中进行自定义查询?.
在这个函数中:
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->>add(....
;
}
谢谢你 !
是否可以在 configureListFields 的 sonataadmin 中进行自定义查询?.
在这个函数中:
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->>add(....
;
}
谢谢你 !
你应该重写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 至少运行此查询两次。首先,它检查查询返回的行数。其次,它分页运行这个查询。
正如 Tautrimas 所说,您可以createQuery($context = 'list')
在管理类中覆盖该函数。
您可以尝试像这样更改查询的 SELECT 部分:
$query = parent::createQuery($context);
$query->add('select', 'm', false );
$query->add('from', 'Toto\MyBundle\Entity\MyEntity m', false );
add 函数中的第三个参数是一个布尔值,用于选择追加或替换查询部分。