1

OnetoMany の関連付けがあります

Productただし、1 つのバウチャーはvouchers 1 つの製品にのみリンクされます。

製品フォームがあると、複数のバウチャーを選択できる選択ボックスがあります。しかし、問題は

バウチャーが以前に別の製品にリンクされていた場合は、更新されます。

私の選択ボックスで私が見ることができるように /query する方法はありますか

  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 に答える