Как обновить данные и удалить лишние данные в laravel? - PullRequest
0 голосов
/ 12 января 2020

Я создаю простой тест, в котором я использую разные типы вопросов. Моя таблица ответов имеет структуру: id, question_id, answer, is_correct . Если вопрос имеет тип флажка, то будет несколько вариантов ответа. Запись в базе данных будет выглядеть так (например):

id => 1, question_id => 2, answer => "answer 1", is_correct => 1;
id => 2, question_id => 2, answer => "answer 2", is_correct => 0;
id => 3, question_id => 2, answer => "answer 3", is_correct => 0;

Предположим, что администратор решил изменить тип вопроса на текстовый. На такой вопрос есть один ответ. При обновлении я получаю именно такую ​​запись в базе данных:

id => 1, question_id => 2, answer => "new answer", is_correct => 1;
id => 2, question_id => 2, answer => "new answer", is_correct => 1;
id => 3, question_id => 2, answer => "new answer", is_correct => 1;

Это мой вариант:

public function update(Request $request, Question $question)
    {
        $question->update($request->all());
        foreach ($request->input('answers') as $key => $value) {
                Answer::where('question_id', $question->id)->update([
                    'answer' => $value,
                    'is_correct' => $request->input('is_correct')[$key]
                ]);
                Answer::where('question_id', $question->id)
                      ->where('answer', '!=', $value)->delete();
        }
    }

Но это не удаляет ненужные данные

Есть ли способ обновить первую запись и удалить остальные в методе обновления?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...