2017-07-10 15 views
0

このSQLを実行する必要があります。Doctrine update joinエラーを使用する

$this->getRepository('AppBundle:Order') 
    ->createQueryBuilder('o') 
    ->update() 
    ->join('o.dis', 'd') 
    ->set('o.channel.type', 'CASE WHEN d.hasVod = 1 THEN :vod ELSE :other END') 
    ->setParameter('vod', 'vod') 
    ->setParameter('other', 'other) 
    ->getQuery() 
    ->execute() 
; 

それとも

$this->getRepository('AppBundle:Order') 
    ->createQueryBuilder('o') 
    ->update() 
    ->join('o.dis', 'd') 
    ->set('o.channel.type', 'vod') 
    ->where('d.hasVod = 1') 
    ->getQuery() 
    ->execute() 
; 

が、エラー: 'D' が定義されていません。 DoctrineでSQLを実行しようとすると、このエラーも発生します。

あなたは良いアイデアがあれば教えてください、ありがとう!!

答えて

0

テーブルdを結合命令で定義する必要があります。 クエリの開始は次のようになります。

$this->getRepository('AppBundle:Order') 
    ->createQueryBuilder('o') 
    ->join('YourBundle:YourEntity', 'd','WITH', 'd.id = o.dis') 
/* ...... */ 
+0

エラーはまだ「d」が定義されていません。 結果Sqlにはエンティティが参加していません。 – ZhouNan

関連する問題