#php #mysql #laravel
#php #mysql #laravel
Вопрос:
Когда я пытаюсь сохранить или обновить модель, я получаю ошибку, которая приведена ниже, для поля spid_id. Я не уверен, что не так.
Общая ошибка: 1366 неверное целое значение: » для столбца ‘spid_id’ в строке 1 (SQL: обновление
magazines
setspid_id
= ,updated_at
= 2016-10-21 08:28:46,summary
= гдеid
= 8)
Вот как выглядит моя таблица:
Schema::create('magazines', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('visual_id')->nullable();
$table->integer('spid_id')->nullable();
$table->timestamps();
});
Я попытался изменить свой spid_id, чтобы он не был обнуляемым в БД, выполнив миграцию, потому что я думал, что это может быть причиной:
Schema::table('magazines', function (Blueprint $table) {
$table->integer('spid_id')->change();
});
Но поле по-прежнему оставалось обнуляемым.
Это моя функция сохранения для создания формы:
$magazine = Magazine::create([
'name' => $request->input('name'),
'visio_link_prefix' => $request->input('visio_link_prefix'),
'spid_id' => $request->input('spid_id'),
'summary' => $request->input('summary'),
]);
Комментарии:
1. Покажите нам место, где вы обновляете в Laravel
2. Если значение пустое, не устанавливайте ключ. Он попытается сохранить данные как целое число (без
'
символов). Или добавьте кавычки вокруг значения или отфильтруйте массив.3. Не могли бы вы, пожалуйста, опубликовать код, в котором возникает ошибка. Итак, обновление кода или сохранение модели?
4. Можете ли вы попробовать
'spid_id' => $request->has('spid_id') ? $request->input('spid_id') : NULL,
?5. можете ли вы dd($request->input(‘spid_id’))? Каков результат?
Ответ №1:
Вам нужно проверить, spid_id
существует ли в вашем запросе, прежде чем сохранять его. Например, в вашем случае это будет выглядеть так:
'spid_id' => $request->has('spid_id') ? $request->input('spid_id') : NULL,
Ответ №2:
Другой способ создать запись — использовать объекты eloquent
$magazine = new Magazine
$magazine->name = $request->input('name');
$magazine->visio_link_prefix = $request->input('visio_link_prefix')
$magazine->spid_id = $request->input('spid_id', null);
$magazine->summary = $request->input('summary');
$magazine->save();
Это гарантирует, что он автоматически присвоит значение null или значение по умолчанию, которое вы, возможно, указали в своей модели.