findBy - 更新Symfony中的多个记录

问题描述 投票:1回答:1

我得到了一个问题的多个答案结果。我想更新我的号码字段,例如该问题的每个答案。

问题是它总是更新一个。与findOneBy一起工作正常但是,它仍然只更新一个答案。

我尝试使用foreach,但我认为我的语法错误,因为“回答”在任何地方都无法识别。

$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;
php arrays symfony doctrine symfony-3.4
1个回答
2
投票
$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);
© www.soinside.com 2019 - 2024. All rights reserved.