我遇到了一个过滤器功能问题,我正在使用两个表。 第一个,eventcheckin-table'用于通过特定活动的预订ID来检查客人。因此,它还应验证ID是否已经签入。尚未签入的ID应在“实体”字段中作为选项提供。我试图通过以下方式解决这个问题:
SELECT booking.booking_id FROM booking LEFT JOIN event_checkin ON `event_checkin.booking_booking_id = booking.booking_id WHERE` event_checkin.booking_booking_id IS NULL
工作正常。
我对Symfony2表单构建器的解决方案是
->add('bookingBooking', EntityType::class, array (
'class' => 'AppBundle:Booking',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('b')
->leftjoin('AppBundle:EventCheckin', 'e', 'with', 'e.bookingBooking = b.Id')
->expr()->isNull('e.bookingbooking');
},
'label' => 'Booking-ID: * ',
))
Symfony显示此消息
“Doctrine \ ORM \ QueryBuilder”类型的预期参数,“string”给出
我该如何解决这个问题?
感谢您的帮助。 ;)
答案 0 :(得分:1)
我认为,您可以使用andWhere语句,如:
$er->createQueryBuilder('b')
->leftjoin('AppBundle:EventCheckin', 'e', 'with', 'e.bookingBooking = b.Id')
->andWhere('e.bookingbooking is null');
或者
$qb = $er->createQueryBuilder('b');
$qb->leftjoin('AppBundle:EventCheckin', 'e', 'with', 'e.bookingBooking = b.Id')
->add('where', $qb->expr()->isNull('e.bookingBooking'));
return $qb;
启发this。