Seeder пропускает поле id при создании записей

Сеялка для одной из моих таблиц не работает с

Illuminate\Database\QueryException : SQLSTATE[HY000]: Общая ошибка: 1364 Идентификатор поля не имеет значения по умолчанию (SQL: вставить в tests (name, description, panel_id, units, minValue, lowNote, maxValue, highNote, note_id) значения (отношение A/G, отношение альбумина к глобулину, 2, , 1,2, , 2,5, , 1))

Заметили, что поле id пропущено?

Вот метод миграции up():

public function up()
{
    Schema::create('tests', function (Blueprint $table) {
        $table->unsignedBigInteger('id');
        $table->string('name');
        $table->string('description');
        $table->unsignedBigInteger('panel_id');
        $table->string('units');
        $table->string('minValue');
        $table->string('lowNote',512);
        $table->string('maxValue');
        $table->string('highNote',512);
        $table->unsignedBigInteger('note_id');
    });
}

Вот часть метода TestSeeder::run():

$tests = [
    [
        'id' => 1,
        'name' => 'A/G Ratio',
        'description' => 'Albumin to Globulin Ratio',
        'panel_id' => 2,
        'units' => '',
        'minValue' => '1.2',
        'lowNote' => '',
        'maxValue' => '2.5',
        'highNote' => '',
        'note_id' => 1
    ],
];

Вот модель Test:

class Test extends Model
{
    public $timestamps = false;
    protected $fillable = [
    'id',
    'name',
    'description',
    'panel_id',
    'units',
    'minValue',
    'lowNote',
    'maxValue',
    'high_note',
    'note_id'
    ];
}

Обратите внимание, что поле id указано в массиве $fillable, так почему же оно пропускается?


person user3217883    schedule 29.03.2020    source источник
comment
Кроме части кода, нам нужен полный блок кода того, как вы вставляете данные в БД. Отредактируйте свой вопрос и поместите целый блок метода TestSeeder::run(), который отвечает за вставку данных. Кроме того, рекомендуется использовать $table->bigIncrements('id');, если это применимо.   -  person Tpojka    schedule 30.03.2020


Ответы (1)


Вам нужно изменить эту строку:

$table->unsignedBigInteger('id');

to:

$table->bigIncrements('id');
person Hamza Makraz    schedule 30.03.2020