从Symfony2中的2个表中选择

时间:2013-02-22 09:55:04

标签: database symfony query-builder

我在表单中进行查询。

这个想法是:现在我有一个所有用户的下拉列表,好吗?

我有这样的查询:

'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个表的查询......

任何人都可以帮我解决这个问题吗? :)

谢谢!

1 个答案:

答案 0 :(得分: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');
     }

此外,更新您的所有实体(数据,...)

的问题