我有一个产品管理课程。产品实体与类别实体具有多对一关系,即产品与类别相关联。
在产品的管理“列表”页面中,我需要按每个产品关联的类别名称(按字母顺序)排序。
如果字段位于实体本身上,则设置默认排序依据字段很容易(请参阅索纳塔管理员捆绑订单 https://stackoverflow.com/questions/8120787/sonata-admin-bundle-order了解如何执行此操作)。但我不知道如何按相关表中的字段进行排序。
任何帮助表示赞赏。
这似乎是一种解决方法,但它确实有效。您必须添加一个覆盖 createQuery() 方法的连接,而不是指定覆盖 $datagridValues 的默认 sortBy:
<?php
use Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery;
class ExpenseAdmin extends Admin
{
protected $datagridValues = array(
'_page' => 1,
'_sort_order' => 'ASC', // sort direction
'_sort_by' => 'c.name' // field name
);
/**
* @return \Sonata\AdminBundle\Datagrid\ProxyQueryInterface
*/
public function createQuery($context = 'list')
{
$query = parent::createQuery($context);
return new ProxyQuery($query
->join(sprintf('%s.category', $query->getRootAlias()), 'c'));
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)