2017-02-19 8 views
-1

doctrine associateマッピングの負荷のクエリをカスタマイズするにはどうすればよいですか?値は、それが削除される真の平均に設定されている項目テーブル内is_deleted名前の属性(ブール値)は、ありsymfony - Doctrineカスタムクエリをロードするための関連するマッピングエンティティ

仮定ユーザーとアイテム

  • あるデータベース内

    1. 2つのテーブル。 Symfony3
    2. 例えば

    シナリオ

  • プロジェクトのセットアップ、私はユーザーとアイテムのある2つのエンティティクラスを持っています。これらの2つのエンティティの関係は、1対多(各ユーザーは多数のアイテムを持つことができます)です。

    ユーザーを取得しようとすると、関連するアイテムがそのユーザーにも読み込まれます(遅延、熱心、余分な遅延)。

    私が達成しようとするのは、is_deletedをfalseにして項目をロードする場合にのみ、関連付けのマッピングの負荷をカスタマイズすることです。これどうやってするの?

    ご協力いただきありがとうございます。

  • 答えて

    0
    $em->createQueryBuilder() 
        ->select('Item') 
        ->from('XYZBUNDLE:Item', 'Item') 
        ->leftJoin('XYZBUNDLE:User', 'User') 
        ->where('Item.is_deleted', ':is_deleted') 
        ->andWhere('User.id', ':userId') 
        ->setParameter('is_deleted', false) 
        ->setParameter('userId', 1) 
    ->getQuery()->getResult(); 
    

    ここでは、すべてのユーザーのすべての結果を取得する場合は、ユーザーの条件を削除できます。

    +0

    こんにちは、ご協力いただきありがとうございます。私は、このクエリが値trueのアイテムを削除するのに役立つことがわかっています。しかし、アソシエート・ローディングでは実行可能ですか?私がユーザーを読み込むと、is_deletedが自動的にロードされた項目はfalseとなります。 – overshadow

    +0

    - > from( 'XYZBUNDLE:Item'、 'Item') - > leftJoin( 'XYZBUNDLE:User'、 'User'、 'Item.user_id = User')のように使用することもできます。 id ') –

    関連する問題