Конструктор форм Symfony с ассоциацией фильтрованных объектов - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть форма, когда пользователь может забронировать автомобиль в определенный период.

Я хочу создать форму редактирования, чтобы назначить водителя для автомобиля бронирования.

Теперь я хочу, чтобы мне пришлось редактировать бронирование (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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...