1

フォーム内でクエリを実行しています。

アイデアは次のとおりです。これで、すべてのユーザーのドロップダウンが表示されます。

私はこのようなクエリを持っています:

'query_builder' => function(EntityRepository $er) {
      return $er->createQueryBuilder('u')->orderBy('u.lastName', 'ASC');
     }

これは完璧に機能します!

すべてのユーザーを表示する代わりに、カテゴリに関連付けられているユーザーのみが必要です。この定義は「user_data」テーブル(user_id + category_id)にあります。

だから、私は次のようなことをする必要があります:

SELECT * FROM users 
WHERE user_id IN (SELECT user_id FROM user_data WHERE category_id='2')

UserDataのようなエンティティはなく、User.phpしかありませんが、このファイル内で次のことがわかりました。

/**
     *@ORM\ManyToMany(targetEntity="My\Bundle\Entity\Data", inversedBy="users")
     *@ORM\joinTable(name="user_data")
     */
    protected $datas;

[...]

したがって、関係が構築されていることがわかりますが、2つのテーブルに基づいてクエリを構築するためにそれを使用する方法がわかりません...

誰かがこの問題で私を助けることができますか?:)

ありがとう!

4

1 に答える 1

3

これを試して、

'query_builder' => function(EntityRepository $er) {
    return $er->createQueryBuilder('u')
              ->innerJoin('u.datas', 'd')
              ->where('d.category = :category') // Check your Data entity to get the right field name
              ->setParameter('category', $yourCategoryId) // you could use options here
              ->orderBy('u.lastName', 'ASC');
     }

また、すべてのエンティティ(データ、...)で質問を更新します

于 2013-02-22T10:05:39.830 に答える