0

Doctrine Behaviours を使用して翻訳を設定しました。しかし、ソナタの管理リスト ビューでは、Doctrine の動作を使用して保存されたエンティティのすべての翻訳が表示されました。ただし、現在のロケールの翻訳を表示するだけで済みます。エンティティに関数を作成し、transnationals テーブルから翻訳を取得しました。そして、それはうまくいきました。

しかし、今ではパフォーマンスの問題になりました。各レコードで変換テーブルを参照し、クエリが実行されると、約 3000 行がビューに表示され、システムが折りたたまれます。

翻訳入力用のフォームに実装するには、a2lix 翻訳フォームを構成しました。

sonata Admin で現在のロケールを使用して単一の翻訳を表示する方法はありますか?

4

1 に答える 1

2

結合を変換テーブルに配置する必要があります。これにより、レコードごとにデータベースを参照するクエリの数が減ります。次に、現在のオブジェクトからチェックします。

お気に入り:

public function createQuery($context = 'list') {
    $query = parent::createQuery($context);

    $query->addSelect('tl');
    $query->innerJoin($query->getRootAlias() . ".translations", "tl");

    return $query;
}

Sonata Admin で動作します。ソナタ管理者以外でこれを行いたい場合は、結合をリポジトリに配置できます。

于 2014-11-17T10:50:21.787 に答える