2017-12-01 18 views
6

計算された値をソートとして使用するソナタ管理リストに列を持たせる方法はありますか?Sonata Admin - 計算された値による注文リスト

このような何か:(これは動作しません)

$mapper->add('stock', null, [ 
     'sortable' => '(stock.real - stock.inCustomerOrder)', 
    ]); 
+0

小枝タグを追加しましたか?とにかくこれはひどいハックになるでしょう – np87

+0

それは動作しません。 – minychillo

答えて

0

2つの値が同じテーブルから来ているので、どのような本物の列を追加することについてはどうですか? (そして、Doctrineリスナで、エンティティが変更されたときにそれを同期させておくことができます)。

または、こちらのドキュメントから、ソナタによって生成されたクエリをオーバーライドすることができます:https://sonata-project.org/bundles/admin/master/doc/reference/action_list.html#customizing-the-query-used-to-generate-the-list

+0

カスタムクエリで条件/ where句を設定できます。しかし、派生値または計算値でソートすることはできません。 –

+0

試してみませんでしたが、クエリを完全に書き換えることができます。$クエリは、Doctrine QueryBuilderのラッパーであるSonata \ DoctrineORMAdminBundle \ Datagrid \ ProxyQueryです。 –

0

ソートはデータベースクエリに基づいているため、仮想/計算フィールドでソートすることはできません。