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; 
} 

SELECT私の知る限り、クエリの一部を変更することはできず、使用することもできません。これはGROUP BY、Sonata が内部でこのクエリを少なくとも 2 回実行するためです。まず、クエリが返す行数をチェックします。次に、このクエリをページ分割して実行します。

于 2013-10-06T21:01:17.700 に答える
0

createQuery($context = 'list')Tautrimas が言ったように、管理者クラスで関数をオーバーライドできます。

次のように、クエリの SELECT 部分を変更してみることができます。

$query = parent::createQuery($context);
$query->add('select', 'm', false );
$query->add('from', 'Toto\MyBundle\Entity\MyEntity m', false );

add 関数の 3 番目のパラメーターは、クエリ部分を追加するか置換するかを選択するブール値です。

于 2014-05-20T15:44:08.663 に答える