繁体   English   中英

Symfony2:如何在表单(查询构建器)中使用左连接和 isnull?

[英]Symfony2: How do I use in a form (query builder) left join and isnull?

我使用两个表的过滤器函数有问题。 第一个“事件签到表”用于通过预订 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 Form Builder 的解决方案是

->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”的预期参数

我怎么解决这个问题?

谢谢你的帮助。 ;)

我认为,您可以使用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;

灵感在

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM