Laravel 数据填充
参考:
1 | //文件名单数 |
创建模型工厂文件
database/factories/UserFactory.php1
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
27
28
29
/** @var \Illuminate\Database\Eloquent\Factory $factory */
use App\User;
use Illuminate\Support\Str;
use Faker\Generator as Faker;
/*
|--------------------------------------------------------------------------
| Model Factories
|--------------------------------------------------------------------------
|
| This directory should contain each of the model factory definitions for
| your application. Factories provide a convenient way to generate new
| model instances for testing / seeding your application's database.
|
*/
$factory->define(User::class, function (Faker $faker) {
//bcrtpy消耗cpu的函数,静态变量不用每次重新计算
static $password;
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'email_verified_at' => now(),
'password' => $password ?: $password = bcrypt('123456'), // password
'remember_token' => Str::random(10),
];
});
database/factories/ThreadFactory.php1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* @var $factory \Illuminate\Database\Eloquent\Factory */
use App\Thread;
use Faker\Generator as Faker;
$factory->define(Thread::class, function (Faker $faker) {
return [
//user_id字段在seeder文件中处理
'title'=>$faker->sentence,
'body'=>$faker->paragraph,
];
});
database/factories/ReplyFactory.php1
2
3
4
5
6
7
8
9
10
11
12
13
/* @var $factory \Illuminate\Database\Eloquent\Factory */
use App\Reply;
use Faker\Generator as Faker;
$factory->define(Reply::class, function (Faker $faker) {
return [
//user_id,thread_id在seeder中处理
'body'=>$faker->paragraph,
];
});
创建数据填充文件
1 | //文件名复数 |
database/seeds/UsrsTableSeeder1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use Illuminate\Database\Seeder;
use App\User;
class UsersTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
factory(User::class,50)->create();
}
}
database/seeds/TreadsTableSeeder
1 |
|
database/seeds/RepliesTableSeeder
1 |
|
运行 Seeders
重新生成composer的加载器composer dump-autoload
1 | php artisan db:seed |
migrate:refresh
这个命令来填充数据库,该命令会回滚并重新运行所有迁移。这个命令可以用来重建数据库:1
php artisan migrate:refresh --seed