laravel 如何实现数据自动填充

本文介绍了在 Laravel 中如何实现数据自动填充,包括使用 seeder 文件、model 工厂模式以及优化大批量数据插入的方法。通过创建 model 文件、配置 UserFactory 和 Seeder,然后执行命令生成数据,最后讲解了如何改用 insert 方法提高插入效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下为用到的迁移文件
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());
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值