symfony表单生成器与过滤实体关联

smtd7mpg  于 2021-06-18  发布在  Mysql
关注(0)|答案(0)|浏览(236)

我有一个表格,当用户可以预订车辆在一段时间的日期。
我想做一个编辑表格,把一个司机分配给一辆预定的车。
现在我想要的是,当我必须编辑一个预订(id,datefrom,dateto,driver,vehiclue)时,我有一个下拉列表,其中列出了时段内可用的驾驶员(datefrom,dateto)。
我正在尝试使用createquery函数用choice类型和来自查询的数据构建表单。但它什么也没有。
我尝试了entitytype,但我的查询无法获得可用驱动程序列表,因为关联字段(driver\u id)位于预订表中,而不是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();

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题