以下为用到的迁移文件
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email');
$table->timestamps();
});
Schema::create('logins', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id');
$table->string('ip_address');
$table->timestamps();
});
创建数据填充文件 seeder
php artisan make:seeder UsersTableSeeder
编写文件
DB::table('users')->insert(
[
[
'name' => '张三',
'email' => '10@qq.com',
'created_at' => Carbon::now(),
'updated_at' => Carbon::now()
],
[
'name' => '李四',
'email' => '11@qq.com',
'created_at' => Carbon::now(),
'updated_at' => Carbon::now()
]
]
);
编写完成后找到 database/seeds/DatabaseSeeder 文件,写入以下代码
public function run()
{
$this->call(UsersTableSeeder::class);
}
随后执行命令
php artisan db:seed
生成对应的记录
如果要大批量的生成数据,用该方法就显得相对麻烦。此时我们应该使用 model工厂模式 来大量生成数据。
首先创建对应的 model 文件
php artisan make:model Models/User
class User extends Model
{
public $table = "users";
public $fillable = ['name', 'email'];
}
创建模型工厂,找到 database / factories / UserFactory.php 文件
php artisan make:factory UserFactory
$factory->define(\App\Models\User::class, function (Faker $faker) {
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
];
});
其中对于 Faker 详细的使用请查看 传送门
随后修改文件 UsersTableSeeder
public function run()
{
factory(\App\Models\User::class, 50)->create();
}
最后执行
php artisan db:seed
生成对应的数据
优化大批量插入数据
将原先的 create 插入数据改为使用 insert,create() 会对数据库进行多次操作,而 insert() 为一次
public function run()
{
factory(\App\Models\User::class, 50)->make();
\App\Models\User::insert($users->toArray());
}