Laravel中如何配置fake-car扩展在CarFactory生成汽车伪数据
Laravel pelmered/fake-car 工厂配置完整方案
1、先安装依赖扩展包
开发环境下执行composer命令:composer require pelmered/fake-car --dev
2、CarFactory.php 配置方案
Provider注册代码直接写在工厂的definition()方法开头即可,无需放到Car模型中,完整工厂代码参考:
<?php namespace Database\Factories; use Illuminate\Database\Eloquent\Factories\Factory; class CarFactory extends Factory { protected $model = \App\Models\Car::class; public function definition() { // 这里注册fake-car provider $this->faker->addProvider(new \Faker\Provider\Fakecar($this->faker)); $v = $this->faker->vehicleArray(); return [ // 你可以根据自己的表字段调整以下返回值,合并原有需求即可 'name' => $v['brand'] . ' ' . $v['model'], 'founded' => $this->faker->biasedNumberBetween(1998,2017, 'sqrt'), 'description' => $this->faker->paragraph(), 'vehicle_type' => 'car', 'vin' => $this->faker->vin, 'registration_no' => $this->faker->vehicleRegistration, 'type' => $this->faker->vehicleType, 'fuel' => $this->faker->vehicleFuelType, 'brand' => $v['brand'], 'model' => $v['model'], 'year' => $this->faker->biasedNumberBetween(1998,2017, 'sqrt'), ]; } }
如果需要全局注册Provider,避免每个工厂都重复写注册代码,可以在app/Providers/AppServiceProvider.php的register()方法中添加以下配置:
public function register() { $this->app->extend(\Faker\Generator::class, function ($faker) { $faker->addProvider(new \Faker\Provider\Fakecar($faker)); return $faker; }); }
全局注册后,所有工厂都可以直接调用fake-car提供的faker方法,无需再单独注册Provider。
3、Tinker 生成测试数据
执行以下命令进入Tinker:php artisan tinker
执行生成数据命令,按需调整生成数量:\App\Models\Car::factory()->count(20)->create()
内容的提问来源于stack exchange,提问作者Ginz77
相关产品推荐
相关产品推荐

