我与有一对多关联
Product
将有许多vouchers
但一张代金券只能链接到一个产品。
现在,当我有了产品表单,我就有了选择框,我可以在其中选择多个凭证。但问题是
如果凭证以前链接到另一个产品,则会更新它。
那么,有没有任何方法/查询可以让我在选择框中看到
- 所有当前未链接到任何产品的vouers(可以这样做)
- 现在,但我也想展示之前链接到当前编辑产品的vochuher
这是我的代码
->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
))
您可以编辑查询。我们不知道您的关联是什么样子,但假设您使用的是vouchers
。
//...
->where('u.product_id = :id')
->leftJoin('u.vouchers','v')
->having('COUNT(v.id) = 0')
->groupBy('u.product_id');