2014-09-16 6 views
0

Я пытаюсь обновить строку из некоторых таблиц в одном запросе. Я сделал:DQL Обновление нескольких таблиц

 $this->getDoctrine()->getManager() 
      ->createQuery(' 
      UPDATE eo, tw FROM  
      ProEntityOneBundle:EntityOne eo, 
      ProEntityTwoBundle:EntityTwo tw 
      SET eo.propertyOne = :newProperty, 
       tw.propertyTwo = :newProperty 
      WHERE eo.propertyOne = :oldProperty 
       AND tw.propertyTwo = :oldProperty') 
      ->setParameters(array('newProperty' => $newProperty, 'oldProperty' => $oldProperty)) 
      ->execute(); 

Но я получаю эту ошибку:

[Semantical Error] line 0, col 24 near 'eo, tw': Error: Class 'eo' is not defined.

Что я делаю неправильно? Возможно ли обновить некоторые таблицы в одном запросе с помощью DQL?

+1

Я думаю, вы не можете обновить 2 объекта с помощью одного запроса dql, а также присоединяться к обновлению не поддерживаются dql –

ответ

2

Это невозможно. Каждый запрос Doctrine сопоставляется с одной операцией SQL, выполняемой с БД, и вы не можете обновлять более одной таблицы в инструкции.

+0

. С положительной стороны ваш запрос по существу состоит из двух отдельных вещей, написанных как один, так что использование Doctrine дважды выиграло быть менее эффективным – frumious

Смежные вопросы