我在表单中进行查询。
这个想法是:现在我有一个所有用户的下拉列表,好吗?
我有这样的查询:
'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个表的查询......
任何人都可以帮我解决这个问题吗? :)
谢谢!
答案 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');
}
此外,更新您的所有实体(数据,...)
的问题