2013-10-06 75 views
1

是否可以在configureListFields中的sonataadmin中進行自定義查詢? 。Sonata Admin configureListFields

在這個函數:

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

謝謝!

回答

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,因爲內部索納塔運行此查詢至少兩次。首先,它檢查查詢返回的行數。其次,它運行這個查詢分頁。

+0

種類的相關[問題](http://stackoverflow.com/questions/24450039/how-to-customize-configuredatagridfilters-in-sonata-admin-to-use-non-related-mon)? – abbood

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函數的第三個參數是一個布爾值,要麼選擇追加或替換查詢部分。