Doctrine – вставить несколько строк только с одним сохранением ()

Как вставить несколько строк в метод вызова table save() метод Doctrine ?

Solutions Collecting From Web of "Doctrine – вставить несколько строк только с одним сохранением ()"

Добавьте каждую запись в Doctrine_Collection вызов save() в объект коллекции.

 $collection = new Doctrine_Collection('tablename'); $collection->add($record1); $collection->add($record2); $collection->add($record3); $collection->add($record4); $collection->save(); 

Это работает, только если все записи относятся к одной таблице. В противном случае вам не повезло.

Здесь другое решение, протестированное на Доктрине 1.2. Нет необходимости сохранять каждую запись, flush () автоматически обнаруживает все несохраненные экземпляры и сохраняет их все.

 $row = new \My_Doctrine_Record(); $row->name = 'aaa'; $row->approved = 1; /// ... $row = new \My_Doctrine_Record(); $row->name = 'val'; $row->approved = 'bbb'; Doctrine_Manager::connection()->flush(); 

Если вы используете symfony2, это так просто

 // get the manager $em = $this->getDoctrine()->getManager(); // enter the records $em->persist($entitiy1); $em->persist($entitiy2); $em->persist($entitiy3); $em->persist($entitiy4); $em->persist($entitiy5); // save the entries $em->flush(); 

1) Объявите все таблицы. 2) Создайте форму. 3) Отправка на несколько таблиц. 4) Сохранять данные.

 use AppBundle\Entity\site; use AppBundle\Entity\nba; 

1) Объявите все таблицы.

  $site = new site; $nba = new nba; 

2) Создать форму

 $form = $this->createFormBuilder($site) ->add('site_id', IntegerType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px'))) ->add('category', ChoiceType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px'), 'choices' => $output)) ->add('team', ChoiceType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px'), 'choices' => $nbat)) ->add('save', SubmitType::class, array('label' => "Create",'attr' => array('class' => 'btn btn-success', 'style' => 'margin-bottom:15px'))) ->getForm(); $form->handleRequest($request); if($form->isSubmitted() && $form->isValid()) 

3) Вставка в несколько таблиц.

  { $site_id = $form['site_id']->getData(); $category = $form['category']->getData(); $team = $form['team']->getData(); $site->setSiteId($site_id); $site->setCategory($category); $nba->setWinner($team); -  { $site_id = $form['site_id']->getData(); $category = $form['category']->getData(); $team = $form['team']->getData(); $site->setSiteId($site_id); $site->setCategory($category); $nba->setWinner($team); -  { $site_id = $form['site_id']->getData(); $category = $form['category']->getData(); $team = $form['team']->getData(); $site->setSiteId($site_id); $site->setCategory($category); $nba->setWinner($team); 

4) Сохранять данные

  $em = $this->getDoctrine()->getManager(); $em->persist($site); $em->persist($nba); $em->flush(); 

Я взглянул на код метода «save» в Doctrine (1.2.x) «Collection.php», и все, что я увидел, выглядит примерно так:

 foreach ($this->getData() as $key => $record) { $record->save($conn); } 

Как это всегда вставлять все записи с помощью одного mysql INSERT?