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 回答