У меня есть форма, когда пользователь может забронировать автомобиль в определенный период.
Я хочу создать форму редактирования, чтобы назначить водителя для автомобиля бронирования.
Теперь я хочу, чтобы мне пришлось редактировать бронирование (id, dateFrom, dateTo, водитель, транспортное средство). У меня есть раскрывающийся список со списком водителей, доступных в данный период (datefrom, DateTo).
Я пытаюсь создать форму с типом выбора и данными из запроса, используя функцию CreateQuery. но ничего не показывает.
Я пробовал EntityType, но мой запрос на получение списка доступных драйверов не работает должным образом, потому что соответствующее поле (driver_id) находится в таблице бронирования, а не в таблице драйверов.
схема:
Резервирование (идентификатор, дата, время, дата, автомобиль, водитель ...)
Водитель (идентификатор, имя)
Ниже моего кода:
$em = $this->getDoctrine()->getEntityManager();
$reservation = $em->getRepository('AppBundle:Reservation')->find($id);
$qb = $em->createQuery("SELECT c FROM AppBundle\Entity\Chauffeur c left JOIN AppBundle\Entity\Reservation r
WITH c.id = r.vehicule
and r.datefin >= :d1
and r.datedebut <= :d2 where r.id IS NULL");
$qb->setParameter('d1' , $reservation->getDatedebut() );
$qb->setParameter('d2' , $reservation->getDatefin() );
$chauffeurs = $qb->getArrayResult();
$reservation->setChauffeur($chauffeurs);
$editForm = $this->createFormBuilder($reservation)
->add('client', TextType::class)
->add('telephone', TextType::class)
->add('email', TextType::class)
->add('datedebut', DateTimeType::class, [
'widget' => 'single_text'])
->add('datefin', DateTimeType::class, [
'widget' => 'single_text'])
->add('telephone', TextType::class)
->add('chauffeur', ChoiceType::class, array(
'choices' => $chauffeurs,
'multiple' => true,
'expanded' => true,
))
->add('modifier', SubmitType::class, array('label' => 'Modifier'))
->getForm();