2017-11-02 14 views
1

私はSymfony3フレームワークを使用していますが、私はユーザーエンティティとファイルエンティティを持っています。ユーザーがアップロードしたすべてのサイズのファイルの合計をソナタ管理ユーザーリストに表示したかったのです。そのフィールドをソート可能にしたい場合は、エラーが発生します。doctrineの基準にdqlを渡すことはありますか

`Catchable Fatal Error: Argument 1 passed to Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery::entityJoin() must be of the type array, null given, called in /home/milos/sites/coinaphoto/vendor/sonata-project/doctrine-orm-admin-bundle/Datagrid/ProxyQuery.php on line 143 and defined` 

ファイルの合計を計算するユーザーエンティティにカスタム関数があります。文字列を返します。

私の質問は、どういうわけか、合計を得るために基準にdqlを渡すことができます。または、これを実装する他の方法を提案できますか?

` public function getStoragge(){ 
     $criteria = Criteria::create() 
      ->where(Criteria::expr()->someexpression...); 
     $matches = $this->file->matching($criteria); 
    }` 

のような似たようなあなたがフィールド

` $dql = "SELECT SUM(e.amount) AS balance FROM Bank\Entities\Entry e " . 
    "WHERE e.account = ?1"; 
    $balance = $em->createQuery($dql) 
       ->setParameter(1, $myAccountId) 
       ->getSingleScalarResult();` 

答えて

0

を集約する必要があるとき、私はあなたのDQLことについて知っているが、ソナタ管理テーブルビューにソートに関するいくつかの事実はありません。問題は、モデル内で「仮想」を行っているにもかかわらず、データベース操作でバックグラウンドでアクションをソートするということです。モデルに単なるメソッドを追加する場合、データグリッドはこのメソッド/プロパティをソートに関連付けることができません。

私の経験では、対応するテーブルで物理的に利用できないフィールドでソートすることはできません。並べ替えボタンをクリックすると、クエリ全体を記述しても、要求を無視している完全な他のクエリが実行されます。

誰かが私に反対を言うならば、私は満足しているよ...

も参照してください。この問題https://github.com/sonata-project/SonataAdminBundle/issues/1077

+0

は、はい、私はその問題を見て、私はお聞きしたかった誰かが解決策を見つけることであるか、その他の方法を使用して、 。 –

+0

私はちょうどソートの振る舞いを書き直す機会を見ています...私はそれがちょうど非常に深いコアのもの(それではないですか?)...残念ながら私は今までの道を見つけていない...教えてくださいtheresいつか快適な解決策を... –

関連する問題