Laravel工厂为字段返回0,将数字存储在数据库中


Laravel factory returns 0 for field, stores number in database

我有一个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;