Laravel — Общая ошибка: 1366 неверное целое значение

#php #mysql #laravel

#php #mysql #laravel

Вопрос:

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

Общая ошибка: 1366 неверное целое значение: » для столбца ‘spid_id’ в строке 1 (SQL: обновление magazines set spid_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 или значение по умолчанию, которое вы, возможно, указали в своей модели.