Laravel, за исключением одного поля ввода из формы для хранения в БД

Laravel, за исключением одного поля ввода из формы для хранения в БД

27.01.2020 08:57:06 Просмотров 29 Источник

Я все еще получаю ошибку при попытке сохранить данные в CatererUserмодели

ошибка:

Кодом sqlstate[23000]: нарушение ограничения целостности: 1452 невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется (icaterall.caterer_users, ограничение caterer_users_store_id_foreignвнешний ключ (store_id) ссылки storeinfos(id) на DELETE CASCADE) (SQL: вставка в caterer_users( user_id, updated_at, created_at) значения (1997, 2020-01-27 00:43:55, 2020-01-27 00:43:55))

Таблица CatererUser

        $table->increments('id');
        $table->integer('user_id')->unique()->unsigned();
        $table->integer('store_id')->unique()->unsigned();
        $table->timestamps();
        $table->foreign('user_id')
            ->references('id')
            ->on('users')
            ->onDelete('cascade');
        $table->foreign('store_id')
            ->references('id')
            ->on('storeinfos')
            ->onDelete('cascade');


   $user=User::create($request->except(['store_id']));

    } catch (\Exception $exception) {
        logger()->error($exception);
        return redirect()->back()->with('message', 'Unable to create new user.');
    }

       CatererUser::create([
        'user_id' => $user->id,
        'store_id' =>$request->input('store_id'),
        ]);
У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/59925754/laravel-except-one-input-field-from-a-form-to-store-in-db#comment105974314_59925754
как я могу использовать запрос?? Im использует $validatedData ['password']= bcrypt... это не может сработать

Ответы - Laravel, за исключением одного поля ввода из формы для хранения в БД / Laravel, except one input field from a form to store in DB

Webinion

27.01.2020 09:26:28

попробуйте использовать другой массив, вот так.

$inputData = $request->except(['store_id']);
$inputData['password'] = bcrypt($inputData['password']);
$inputData['user_id'] = $user->id;
CatererUser::create($inputData);

вы можете добавить в $inputDataи отредактировать их. После того, как все edit / add сделано, просто используйте этот массив в методе create.

Kolitha Nilame

27.01.2020 09:53:25

// попробуйте ниже кода // см. https://laravel.com/docs/5.5/requests

try { $dataForUser = $request->except(['store_id']);

   $dataForUser['password']= bcrypt($request->password);

   $user=User::create($dataForUser);

} catch (\Exception $exception) {
    logger()->error($exception);
    return redirect()->back()->with('message', 'Unable to create new user.');
}
https://stackoverflow.com/questions/59925754/laravel-except-one-input-field-from-a-form-to-store-in-db/59926306#comment105975468_59926306
ошибка к сожалению в таблице CatererUser :(
BKF

27.01.2020 10:27:10

Я думаю, что вы можете очистить свои таблицы и попробовать еще раз, возможно, у вас есть данные в таблицах, таких как storeinfos, и вы установите позже правило ondelete.

https://stackoverflow.com/questions/59925754/laravel-except-one-input-field-from-a-form-to-store-in-db/59926694#comment105975752_59926694
У меня уже есть данные в таблице storeinfos, и я попытался добавить вручную store_id, но все равно получил ту же ошибку
Является ответом!
Ash

27.01.2020 10:38:53

проверьте вашу модель CatererUSer, убедитесь, что заполняемые поля имеют одинаковые имена я думаю, что идентификатор ссылки должен быть storeinfo_id так что вы можете ошибиться в этом

Закрыть X