2017-06-29 74 views
1

我想更新通過更新的開始和結束日期相同名字我的所有事件,更新不工作使用學說

我以前張貼的問題,但現在我已經改變了一些代碼,但仍不工作?

代碼重定向到app_event路線沒有更新!

錯誤在哪裏?

Controller.php這樣:

public function updateEventsAction(Request $request) 
{ 
    $form = $this->createForm('AppBundle\Form\UpdateEventType'); 
    $form->handleRequest($request); 
$event_name=$form[name]->getData(); 
$choosedName = $event_name->getName(); //get name from combobox 


    $em = $this->getDoctrine()->getManager(); 

    $repository = $this 
     ->getDoctrine() 
     ->getManager() 
     ->getRepository('AppBundle:Event') 
    ; 
    $events = $repository->findBy(
     array('name' => $choosedName) // array of events have same name choosen from combobox 

    ); 
     if ($form->isSubmitted() && $form->isValid()) { 

      //foreach event update start and end dates 
      foreach ($events as $event) { 


      $event ->setStartDate($event ->getStartDate()); 
      $event ->setEndDate($event ->getEndDate()); 

       $em->persist($event); 
       $em->flush(); 

      } 

      return $this->redirectToRoute(‘app_event’); 
    } 
    return $this->render('AppBundle:Event:updateEvents.html.twig', array(
     'form' => $form->createView(), 
    )); 
} 

Event.html.twig

{{ form_start(form}} 

<div> 
    <label for="name">Name of the event</label> 
    <div > {{ form_widget(form.name}} </div> 
</div> 
<div > 
    <label for="startDate ">Start date </label> 
    <div > {{ form_widget(form.startDate }} </div> 
</div> 
<div> 
    <label for=" EndDate ">End date </label> 
    <div> {{ form_widget(form. endDate}} </div> 
</div> 
    <div> 
     <button type="submit" ">Update</button> 
    </div> 
</div> 

{{ form_end(form) }} 

UpdateEventsType.php:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder->add(' name ',EntityType::class,array(
     'class' => 'AppBundle: Event', 'choice_label'=>'name') ) 
     ->add(' startDate ', DateType::class, array(
      'widget' => 'single_text', 
      // this is actually the default format for single_text 
      'format' => 'yyyy-MM-dd')) 
     ->add(' endDate ', DateType::class, array(
      'widget' => 'single_text', 
      // this is actually the default format for single_text 
      'format' => 'yyyy-MM-dd')) 
    ; 
} 

更新

現在我已經更新了我的代碼,它似乎是一個日期格式問題,因爲更新我的代碼後,這是錯誤:

An exception occurred while executing 'UPDATE event SET startDate = '$ choosedStartDate ', endDate = '$ choosedEndDate ' WHERE name = ?' with params ["Events16"]: 

SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect date value: '$choosedDateDebut' for column startDate at row 1 

這是新的代碼

public function updateEventsAction(Request $request) 
{ 
    $form = $this->createForm('AppBundle\Form\UpdateEventType'); 
    $form->handleRequest($request); 


     if ($form->isSubmitted() && $form->isValid()) { 
      $event_name=$form['name']->getData(); 
      $choosedName = $event_name->getName(); 

      $choosedStartDate=$form[startDate]->getData(); 


      $choosedEndDate =$form[endDate]->getData(); 





      print_r("***********choosed Start date****************"); print_r($choosedStartDate); 
      print_r("***********choosed end date****************"); print_r($choosedEndDate 


      $em = $this->getDoctrine()->getManager(); 

      $repository = $this 
       ->getDoctrine() 
       ->getManager() 
       ->getRepository('AppBundle:Event) 
      ; 
      $listevents= $repository->findBy(

       array('name' => $choosedName) // Critere 
      ); 


      foreach ($listevents as $event) { 

       $datestart_bd =$event->getDateDebut(); 

       print_r("Start date from database"); 
       print_r($datestart _bd); 
      } 

      $q = $em->createQuery('update AppBundle\Entity\Event e SET e.startDate =\'$choosedStartDate \' , e.endDate =\'$choosedEndDate \' WHERE e.name= ?1'); 
      $q->setParameter(1, $choosedName); 
      $q->execute(); 

      return $this->redirectToRoute('app_event'); 
    } 
    return $this->render('AppBundle:Event:updateEvents.html.twig', array(
     'form' => $form->createView(), 
    )); 
} 

更新2

現在的代碼工作正常我沒有使用createQuery任何更

我的代碼工作:

public function updateEventsAction(Request $request) 
{ 
    $form = $this->createForm('AppBundle\Form\UpdateEventType'); 
    $form->handleRequest($request); 
$event_name=$form[name]->getData(); 
$choosedName = $event_name->getName(); //get name from combobox 
    $choosedStartDate=$form[‘startDate’]->getData(); 


      $choosedEndDate =$form[‘endDate’]->getData(); 

    $em = $this->getDoctrine()->getManager(); 

    $repository = $this 
     ->getDoctrine() 
     ->getManager() 
     ->getRepository('AppBundle:Event') 
    ; 
    $events = $repository->findBy(
     array('name' => $choosedName) // array of events have same name choosen from combobox 

    ); 
     if ($form->isSubmitted() && $form->isValid()) { 

      //foreach event update start and end dates 
      foreach ($events as $event) { 


      $event ->setStartDate($choosedStartDate) 
      $event ->setEndDate($choosedEndDate); 

       $em->flush(); 

      } 

      return $this->redirectToRoute(‘app_event’); 
    } 
    return $this->render('AppBundle:Event:updateEvents.html.twig', array(
     'form' => $form->createView(), 
    )); 
} 
+1

只需使用一些'dump($ something)'調試輸出來查看最新的錯誤,並查看Symfony分析器以查看是否有一些錯誤。閱讀[如何創建一個最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve)並相應地將問題更新到[如何提問](http://stackoverflow.com/help/)如何提問)指令。 –

回答

0

你是同一日期,你把他們從數據庫中,當你可能想從形式將它們設置爲事件。

變化的代碼段:上batch processing

foreach ($events as $event) { 
     //$event_name variable holds your form data 
     $event->setStartDate($event_name->getStartDate()); 
     $event->setEndDate($event_name->getEndDate()); 

     $em->persist($event);//note that you only need to persist new events, so this is unnecesarry 
     $em->flush();//I'd recommend 'batch' flushes 
} 

更多信息。