Forms 使用某种连接实体呈现窗体

Forms 使用某种连接实体呈现窗体,forms,symfony,doctrine-orm,Forms,Symfony,Doctrine Orm,我有3个实体: 顾客 合同(每个客户都有一个或多个合同,一个合同只针对一个客户:因此客户和合同之间存在一个单一的关系) 发票(每个发票都指一个或多个合同,每个合同都有一个或多个发票:所以合同和发票之间有很多关系) 现在我想使用复选框呈现发票表单。我写道: ->add('contracts',null, array( 'multiple' => true, 'expanded' => true )) 在InvoiceFormType中,但我得到的是所有合同,而不仅仅是特定

我有3个实体: 顾客 合同(每个客户都有一个或多个合同,一个合同只针对一个客户:因此客户和合同之间存在一个单一的关系) 发票(每个发票都指一个或多个合同,每个合同都有一个或多个发票:所以合同和发票之间有很多关系)

现在我想使用复选框呈现发票表单。我写道:

->add('contracts',null, array(
'multiple'  => true,
'expanded'  => true
 ))
在InvoiceFormType中,但我得到的是所有合同,而不仅仅是特定客户的合同

怎么做

提前谢谢。
v、

不能将
null
作为表单类型。使用您自己的
合同类型:

$builder->add('contracts', new ContractsType(), array(
     'multiple' => true,
     'expanded' => true
));

更多信息。

解决方案是使用内置到表单中的查询

在这个链接上

因此:


不对。使用
null
值强制进行表单类型猜测。见。
 'query_builder' => function (EntityRepository $er) use ($customer) {
    $q=$er->createQueryBuilder('c')
          ->where('c.customer= :customer')
          ->setParameter('customer', $customer);

    return $q;
}