Я пытаюсь обновить массив с объектами внутри чего-то вроде этого, с текущим кодом, который у меня есть, он сохраняет только первый, я знаю, что это проблема, но я не знаю, как это исправить
array (
0 =>
array (
'option' => 'new',
),
1 =>
array (
'option' => 'ewrwer',
),
),
Это мой текущий код, речь идет о
$option = SurveyQuestionOption::where('survey_question_id', $preg->id)->first();
Как это исправить, чтобы он циклически проходил по всему массиву questionOptions
, а не простопервый? Я пытался ->get()
, но тогда ->save()
не работает.
public function update(Request $request, $id)
{
DB::beginTransaction();
$preg = SurveyQuestion::findOrFail($id);
$preg->question = $request->question;
$preg->survey_section_id = $request->survey_section_id;
$preg->response_type_id = $request->response_type_id;
$preg->optional = $request->optional;
$preg->save();
$ids = [];
if ($request->get('questionOptions')) {
foreach ($request->get('questionOptions') as $item) {
$option = SurveyQuestionOption::where('survey_question_id', $preg->id)->first();
if (empty($option)) {
$option = new SurveyQuestionOption();
$option->survey_question_id = $preg->id;
}
$option->option = $item['option'];
$option->save();
}
}
if (count($ids) > 0) {
SurveyQuestionOption::whereNotIn('id', $ids)->where('survey_question_id', $preg->id)->delete();
}
DB::commit();
return back();
}