我有一个laravel工厂,看起来像这样:
$factory->define( Municipality::class, function ( Generator $faker ) {
return [
'name' => $faker->city,
'number' => (int) $faker->numerify( '####' )
];
} );
如果我运行php artisan tinker
并像这样使用工厂factory(Acme'Models'Municipality::class)->create
,我会得到输出
=> Acme'Models'Municipality {#797
name: "West Alysaland",
number: 0,
}
当我运行Acme'Models'Municipality::all()
时,我得到
>>> Municipality::all();
=> Illuminate'Database'Eloquent'Collection {#771
all: [
Acme'Models'Municipality {#798
number: 9449,
name: "Lake Rosemarie",
},
],
}
在模型中将number
设置为可填充,并且在迁移中将字段设置为unsignedInteger
。
有人知道为什么会发生这种事吗?
编辑:
经过一些调试,我发现这种情况发生在对模型调用->save()
之后。
模型没有自动递增主键,所以我需要在模型中设置public $incrementing = false;
。