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

use*_*410 1 php laravel eloquent

我有一个 Laravel 工厂,看起来像这样:

$factory->define( Municipality::class, function ( Generator $faker ) {

    return [
        'name' => $faker->city,
        'number' => (int) $faker->numerify( '####' )
    ];

} );
Run Code Online (Sandbox Code Playgroud)

如果我php artisan tinker像这样运行和使用工厂 factory(Acme\Models\Municipality::class)->create,我会得到输出

=> Acme\Models\Municipality {#797
  name: "West Alysaland",
  number: 0,
}
Run Code Online (Sandbox Code Playgroud)

当我跑步时,Acme\Models\Municipality::all()我得到

>>> Municipality::all();
=> Illuminate\Database\Eloquent\Collection {#771
     all: [
       Acme\Models\Municipality {#798
         number: 9449,
         name: "Lake Rosemarie",
       },
     ],
   }
Run Code Online (Sandbox Code Playgroud)

number在模型中设置为可填写,并且unsignedInteger在迁移中将字段设置为。

有谁知道为什么会发生这种情况?

编辑:

经过一些调试后,我发现这->save()是在模型上调用之后发生的。

use*_*410 5

模型没有自动递增的主键,所以我需要public $incrementing = false;在模型中进行设置。