将id绑定到doctrine语句

时间:2014-08-06 08:05:12

标签: symfony entity formbuilder

我有三张桌子。一个是存储用户的用户表。另一个是存储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}

1 个答案:

答案 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了解详情