findBy - 在 Symfony 中更新多条记录
findBy - updating multiple records in Symfony
我得到的一个问题有多个答案结果。我想更新我的数字字段,例如针对该问题的每个答案。
问题是它总是更新一个。 In 与 findOneBy 配合使用效果很好,但它仍然只更新一个答案。
我尝试使用 foreach,但我认为我的语法错误,因为 "answer" 在任何地方都无法识别。
$answers = $this->getAnswerRepository()->findBy(['question' => $question]);
foreach ($answers as $answer) {
$answer = new Answer();
$this->em->persist($answer);
}
$answer->setNumbers($answer->getNumbers() +1);
$this->em->flush();
return $answer;
$answers = $this->getAnswerRepository()->findBy(['question' => $question]);
foreach ($answers as $answer) {
$answer->setNumbers($answer->getNumbers() +1);
}
$this->em->flush();
但更好的解决方案是在 AnswerRepository
中使用单独的方法,例如:
function updateCounts($question)
{
$queryBuilder
->update('answers', 'a')
->set('a.number', 'a.number + 1')
->where('a.question', '?')
->setParameter($question)
;
}
然后这样调用:
$this->getAnswerRepository()->updateCounts($question);
我得到的一个问题有多个答案结果。我想更新我的数字字段,例如针对该问题的每个答案。
问题是它总是更新一个。 In 与 findOneBy 配合使用效果很好,但它仍然只更新一个答案。
我尝试使用 foreach,但我认为我的语法错误,因为 "answer" 在任何地方都无法识别。
$answers = $this->getAnswerRepository()->findBy(['question' => $question]);
foreach ($answers as $answer) {
$answer = new Answer();
$this->em->persist($answer);
}
$answer->setNumbers($answer->getNumbers() +1);
$this->em->flush();
return $answer;
$answers = $this->getAnswerRepository()->findBy(['question' => $question]);
foreach ($answers as $answer) {
$answer->setNumbers($answer->getNumbers() +1);
}
$this->em->flush();
但更好的解决方案是在 AnswerRepository
中使用单独的方法,例如:
function updateCounts($question)
{
$queryBuilder
->update('answers', 'a')
->set('a.number', 'a.number + 1')
->where('a.question', '?')
->setParameter($question)
;
}
然后这样调用:
$this->getAnswerRepository()->updateCounts($question);