2014-09-16 2 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

하나의 dql 쿼리로 엔티티 2 개를 업데이트 할 수없고 dql에서 업데이트에 조인 할 수 없다고 생각합니다. –

답변

2

이것은 불가능합니다. 각 Doctrine 쿼리는 DB에 대해 실행되는 단일 SQL 문에 매핑되므로 명령문에서 둘 이상의 테이블을 업데이트 할 수 없습니다.

+0

더하기 측면에서, 쿼리는 본질적으로 어쨌든 하나로 작성된 두 개의 별도의 항목이므로 Doctrine을 두 번 사용하면 두 번 승리했습니다 덜 효율적 일 수는 없다. – frumious

관련 문제