2016-12-23 8 views
0

DoctrineクエリビルダまたはDQLを使用したSymfony3のサブクエリで複数の更新を行う機能はありますか?例えばサブクエリを使用したSymfony3の複数の更新

、私はこのクエリを実行したい:

UPDATE tableA 
SET fieldA2 = max_field2 
FROM (SELECT 
      field1, 
      max(field2) AS max_field2 
     FROM table 
     GROUP BY field1) AS subquery 
WHERE subquery.field1 = tableA.field1; 

私はサブクエリFROMと$entityManager->createQuery()->updateを使用する方法を理解することはできません。

答えて

0

私が知る限り、DQLでは不可能です。

ループを経由する必要があります。

foreach($entities as entity) 
{ 
    $em->flush(); 
} 

これ以外の場合は、Batch processingとするか、プレーンSQLを使用します。したがって、DBALを確認すると便利です。

+0

'$ em-> flush()'はいくつかのクエリー(更新など)を実行するだけなので、このループの意味を理解できません。だから、それは助けにならない。 – melnikoved

+0

バッチ処理は、更新クエリコードがどれだけ実行されるかを制御するだけです。それは制限ですが、解決策ではありません。 現在、プレーンSQLを使用するのは唯一の方法ですが、DQLまたはQueryBuilderではありません – melnikoved

関連する問題