私はいくつかの点でこれを試みましたが、動作するための正確な構文が見つかりません。私の最新の試みは(Symfony2のエンティティリポジトリのクラスで)以下である:doctrineとsymfony2の複数の更新クエリ
public function updateOrdering($new_order, $evaluation_id)
{
$qb = $this->createQueryBuilder('IddpRplusBundle:Answer');
foreach($new_order as $item){
$id = $item['id'];
$answernr = $item['answernr'];
$q = $qb->update('IddpRplusBundle:Answer a')
->set('a.answernr', $answernr)
->where('a.id = :id')
->getQuery()
->execute()
;
}
}
エラーがある:..「無効なパラメータ番号バインドされた変数の数は、トークンの数と一致しません」と私もしたいと思いますその後、MySQLのテーブルの外部キーである句
->where('a.evaluation_id = :evaluation_id')
が、エラーの変更は、それがテーブル自体(評価との関係に存在していても「EVALUATION_IDフィールドを見つけることができない」ことがどこ秒を追加し、回答エンティティは1対多であり、それはエンティティ内でも同様にマッピングされます)
アイデア?
[UPDATE]
は、以下の溶液中の落とし穴がありました。また、flushへの呼び出しを追加しなければなりませんでした。または、このような更新フィールドを累積するようになりました。 "Answer答えのセットanswernr = 1、answernr = 2 where id = 2"。だから、最終的な解決策は:
->set('a.answernr', (int)$answernr + (int)$start)
->where('a.id = :id AND a.evaluation = :evaluation_id ')
->setParameters(array('id' => $id,'evaluation_id' => $evaluation_id))
->getQuery()
->execute()
;
$this->_em->flush();
ありがとうございました:)このようになりました。 - >ここで( 'a.id =:idとa.evaluation =:evaluation_id') - > setParameters(array( 'id' => $ id 、 'evaluation_id' => $ evaluation_id)) – Sofia