2017-10-10 2 views
1

私はDoctrineのSQLクエリービルダー(http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/query-builder.htmlDoctrine - SQL Query Builder - 更新して参加しますか?

を使用しており、結合で更新ケースを実行したいと考えています。ここでは参加はサポートされていないことを理解しています。だから私はこれを行う:私はこのクエリを実行すると

$query = $dbalQueryBuilder->update('s_articles_attributes', 'aa') 
        ->set('aa.fp_pos_days', ':days') 
        ->where('aa.articledetailsID IN (SELECT a.id FROM s_articles a WHERE a.supplierID IN (:supplierIds))') 
        ->setParameter('days', $days_string) 
        ->setParameter('supplierIds', $supplierIds) 
        ->execute(); 

$ supplierIdsはstring(39) "3,4,26,28,31,36,37,38,48,49,55,56,64,82"

で、何も起こりません。私がこれをするとき:

$query = $dbalQueryBuilder->update('s_articles_attributes', 'aa') 
         ->set('aa.fp_pos_days', ':days') 
         ->where('aa.articledetailsID IN (SELECT a.id FROM s_articles a WHERE a.supplierID IN (3,4,26,28,31,36,37,38,48,49,55,56,64,82))') 
         ->setParameter('days', $days_string) 
         ->execute(); 

それはうまく動作します。なぜ誰が知っていますか?そして、それは私が間違っていますか?その変数を使用する必要があります。

答えて

0

を爆発:配列は今、重要なだけでなく型を宣言した通り、私は値を渡すん

->setParameter('days', $days_string) 
->setParameter('supplierIds', $supplierIds, \Doctrine\DBAL\Connection::PARAM_INT_ARRAY) 
0

パラメータを設定する文字列ではなく、配列を渡そうとします。doctrineは "where"節をどのようにマップするかを知っています。

私はそれを解決しなかったあなたの文字列

関連する問題