Хранение данных в многошаговой форме - PullRequest
0 голосов
/ 23 марта 2020

Я разрабатываю многошаговую форму для Laravel 7 в соответствии с руководством в https://www.5balloons.info/multi-page-step-form-in-laravel-with-validation/.

То, чего я хочу достичь в своем проекте, - это многошаговая форма на основе PHP / Laravel, которая будет собирать данные от пользователей в четырехступенчатой ​​форме и в конце отправлять все собранные данные. Если бы это была простая форма, которая представляет данные в одну красноречивую модель, то это было бы просто. Но я пытаюсь достичь того, чтобы представить данные в различные таблицы, которые связаны с одной основной таблицей через отношение «многие ко многим».

На первом этапе формы у меня есть такие поля, как «имя», «описание», «слоган» и т. Д. c, которые необходимо ввести в основную таблицу под названием «Информация». Используя переменную сеанса, я передаю данные с первого шага на второй, где начинается путаница.

На втором шаге формы я хочу предоставить определенные опции, из которых пользователь может выбирать. Например, поле «Выбор языка», в котором перечислены все данные, доступные в таблице «языки» для пользователя, из которого пользователь может выбрать несколько языков. Таблица (языки) связана с таблицей (информация) в отношении «многие-многие». Из-за этого я должен вставить языки, выбранные пользователем в сводной таблице. Когда я пытаюсь это сделать, я сталкиваюсь с ошибкой:

SQLSTATE [23000]: нарушение ограничения целостности: 1048 Столбец 'info_id' не может быть пустым (SQL: вставить в info_language (info_id, language_id) значения (?, 1))

, когда я пытаюсь выполнить следующие команды

        $info = $request->session()->get('info');
        $info->fill($request->all());
        $info->languages()->sync($request->input('languages')); \\Error is in this line
        $request->session('info', $info);

Примечание: Когда я пытаюсь сбросить $info - Я получаю все данные, которые я заполнил на первом этапе. При попытке вывести дамп $request->all(); - я получаю данные из поля «Языки», выбранного пользователем.

...