1.依赖包:fakerphp/faker
composer require fakerphp/faker:版本号 --dev
2.生成model,默认位置:App/models
# 这里使用默认命令行,可以安装其他插件生成,如:littlebug/laravel-repository
# 官方命令生成的模型定义,没有插件的丰富
php artisan make:model Test
3.生成factory
php artisan make:model TestFactory
# 编写TestFactory
# 注意底层定义的常量:
\Illuminate\Database\Eloquent\Model
# const CREATED_AT = 'created_at';
# const UPDATED_AT = 'updated_at';
# 1.检查你的表是否是这两个字段(创建时间,更新时间)
# 2.如果不是,则在你的Model重新定义,如果没有时间字段,就设置为null,不能设置为空。
# 3.如果重新定义后,在下面的工厂类可以不写时间。自动会帮你加上的。
<?php
/** @var \Illuminate\Database\Eloquent\Factory $factory */
use Faker\Generator as Faker;
$factory->define(\App\Models\Test::class, function (Faker $faker) {
$actions = [
'跑步',
'跳绳',
'踢球',
'打游戏',
];
return [
'action' => $faker->randomElement($actions),
'title' => $faker->word,
'suggest_tips_price' => $faker->randomFloat(2,0.01,999),
'hour' => $faker->randomFloat(2,0.01,10),
];
});
4.生成seeder
php artisan make:seeder TestSeeder
# TestSeeder.php
<?php
use Illuminate\Database\Seeder;
class TestSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
# 生成50条数据
# 其他方法参考官方文档编写
factory(\App\Models\Test::class,50)->create();
}
}
5.执行生成
# 默认情况下, db:seed 命令将运行 DatabaseSeeder 类,
# 这个类可以用来调用其它 Seed 类。不过,你也可以使用 --class 选项来指定一个特定的 seeder 类
第一种方式:
php artisan db:seed --class=TestSeeder
第二种方式:
php artisan db:seed
# DatabaseSeeder
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
# 多个可用数组形式
# [seeder1::class,seeder2::class,seerder3::class]
$this->call(TestSeeder::class);
}
}