我有三张桌子。一个是存储用户的用户表。另一个是存储locatiosn的位置表。在第三个表中,存储了提示ID。
每个用户都有一个客户端ID,每个位置都有一个客户端ID。
我想创建一个选择字段,该字段仅列出cleint id与用户相同的位置。
实际上,它是这样的:
$this->createFormBuilder($user)
->add('locations', 'entity', array('class' =>'PrUserBundle:Location','property' => 'name'))
//......
->getForm();
这将导致所有存储的条目。有没有办法只选择具有与用户相同的客户端ID的那个?
所以我在SQL中的意思是SELECT *(或WHATEVER)FROM location WHERE client_id = {userdata.client_id}
答案 0 :(得分:1)
您可以将query_builder
选项传递到您的字段,这将是您喜欢的任何查询。
类似于:
$this->createFormBuilder($user)
->add('locations', 'entity',
array('class' =>'PrUserBundle:Location',
'property' => 'name',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('u')
->where(...)
->(...)
->orderBy('u.name', 'ASC');
})
)
查看symfony doc了解详情