1

我有 OnetoMany 关联

Product会有很多vouchers 但是一张优惠券只能链接到一种产品。

现在,当我有产品表单时,我就有了选择框,我可以在其中选择多张优惠券。但问题是

如果优惠券以前链接到另一个产品,那么它会被更新。

那么有什么方法/查询可以在我的选择框中看到

  1. 当前未与任何产品关联的所有凭证(可以这样做)
  2. 现在但我还想展示以前与当前编辑产品相关联的 vocuhers

这是我的代码

 ->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
                    ))
4

1 回答 1

0

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

//...
->where('u.product_id = :id')
->leftJoin('u.vouchers','v')
->having('COUNT(v.id) = 0')
->groupBy('u.product_id');
于 2012-08-21T17:30:56.587 回答