如何在symfony2表单中过滤我的onetoMany关系选择框

时间:2012-08-20 02:08:19

标签: php symfony doctrine-orm

我有OnetoMany协会

Product会有很多vouchers 但是一张优惠券只能与一种产品相关联。

现在,当我有产品表格时,我有选择框,我可以选择多个优惠券。但问题是

如果优惠券先前已与其他产品相关联,则会更新优惠。

所以有任何方式/查询,以便在我的选择框中我可以看到

  1. 目前未与任何产品相关联的所有凭证(可以这样做)
  2. 现在但我还想展示以前链接到当前编辑产品的推文
  3. 这是我的代码

     ->add('vouchers', 'entity', array(
                    'class' => 'AcmeMyBundle:Voucher',
                    'query_builder' => function(EntityRepository $er) {
                        return $er->createQueryBuilder('u')
                        ->where('u.product_id = :id')
                                    ->setParameter('id', 'NULL')
                        ->orderBy('u.name', 'DESC');
                            },
                    'expanded'=> false,
                    'multiple' => true
                        ))
    

1 个答案:

答案 0 :(得分:0)

您可以编辑查询。我们不知道您的关联是什么样的,但假设您使用的是vouchers

//...
->where('u.product_id = :id')
->leftJoin('u.vouchers','v')
->having('COUNT(v.id) = 0')
->groupBy('u.product_id');