laravel - 使用工厂、seeder 、fake等模块进行数据填充
注意点
本文档写的较为简单
只填充单表数据
工厂
创建工厂
1 2 3
| php artisan make:factory FlightFactory //或者 php artisan make:factory PostFactory --model=Post //指定 model
|
写工厂
注意引入需要使用的类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| <?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory; use App\Models\Flight;
class FlightFactory extends Factory { protected $model = Flight::class; /** * Define the model's default state. * * @return array */ public function definition() { // return 里的字段需要与表中一致,少点没事 return [ 'name' => $this->faker->name, 'email' => $this->faker->unique()->safeEmail, 'age' => $this->faker->randomDigit, ]; } }
|
seeder
创建 seeder 文件
1
| php artisan make:seeder FlightTableSeeder
|
写 seeder 文件
注意引入需要使用的类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <?php
namespace Database\Seeders;
use Illuminate\Database\Seeder; use App\Models\Flight;
class FlightTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { // 生成数据集合 Flight::factory()->count(10)->create(); //可定制数据 $flight = Flight::find(1); $flight->name = 'Summer'; $flight->email = 'summer@example.com'; $flight->save(); } }
|
增加配置
在 DatabaseSeeder 中调用 call 方法来指定我们要运行假数据填充的文件
database/seeders/DatabaseSeeder.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder { public function run() { $this->call(FlightTableSeeder::class); //新增一行 } }
|
开始填充数据
1 2 3
| php artisan migrate:refresh //不推荐执行,清洗数据 php artisan db:seed //不推荐执行,所有填充文件都执行,看自己需求 php artisan db:seed --class=FlightTableSeeder //推荐执行,只执行对应的,精准填充数据,
|