Создание объекта по умолчанию из пустого значения при обновлении - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь обновить вопросы опроса, но получаю эту ошибку, и я не уверен, почему. Это код, где я пытаюсь обновить

if ($request->question_id) {
    $ids = [];
    foreach ($request->question_id as $number => $item) {
        $questions = SurveySurveyQuestion::where('survey_id', $survey->id)
            ->where('survey_question_id', $item['id'])->first();
        if (empty($item['id'])) {
            $questions = new SurveySurveyQuestion();
            $questions->survey_id = $id;
            $questions->survey_question_id = $item['id'];
        }
        $questions->order = $number;
        $questions->save();
        $ids[] = $questions['id'];
    }

    if (count($ids) > 0) {
        SurveySurveyQuestion::whereNotIn('survey_question_id', $ids)
            ->where('survey_id', $survey->id)->delete();
    }
}

в строке отображается ошибка

$ questions-> order = $ number;

РЕДАКТИРОВАТЬ: теперь он сохраняет новые добавленные вопросы, но когда я либо пытаюсь изменить порядок вопросов или удалить один я получаю эту ошибку

Столбец не найден: 1054 Неизвестный столбец 'id' в 'выражении where' (SQL: обновление survey_survey_questions set order = 0, где id - null)

Почему это происходит?

1 Ответ

2 голосов
/ 05 марта 2020

Это решение, к которому я прибыл

if ($request->question_id) {
    $ids = [];
    foreach ($request->question_id as $number => $item) {
        $questions = SurveySurveyQuestion::where('survey_id', $survey->id)
            ->where('survey_question_id', $item['id'])->first();
        if (empty($item['id']) || !$questions) {
            $questions = new SurveySurveyQuestion();
            $questions->survey_id = $id;
            $questions->survey_question_id = $item['id'];
            $questions->order = $number;
            $questions->save();
        } else {
            SurveySurveyQuestion::where('survey_id', $survey->id)
                ->where('survey_question_id', $item['id'])->update(['order' => $number]);
        }
        $ids[] = $item['id'];
    }
    if (count($ids) > 0) {
        SurveySurveyQuestion::whereNotIn('survey_question_id', $ids)
            ->where('survey_id', $survey->id)->delete();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...