10、Laravel 11 数据填充
一切准备就绪,就差数据了。之前的学习中,我们是手动添加数据的,这就累死个人了。现在呢,我们就便捷一点,使用填充文件进行数据填充。
怎么进行数据填充?来了解下相关目录:
$ tree database -d
database
├── factories
├── migrations
└── seeders
迁移(migrations):这是我们已经学习过的内容,用于定义数据库结构更改,并能够将这些更改应用到不同环境中。
工厂(factories):它们为每个模型描述伪造的数据值/规则。当需要生成模拟数据以供测试或填充数据库时,可以调用这些工厂来创建符合特定模型属性和关系的假数据实例。
种子(seeds):它们描述了要播种(填充)到数据库中的实际数据。这些数据可能直接硬编码,也可能使用上面提到的工厂来生成。种子通常用于为应用程序初始化一套预定义的测试或示例数据,以便开发者或用户在初始阶段就能看到有内容的系统,或者确保在测试环境中有一致且可用的基础数据集。
1、添加字段
$ php artisan make:migration "add is admin to users table"
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::table('users', function (Blueprint $table) {
$table->boolean('is_admin')->default(false)->after('id')->comment('是否管理员');
});
}
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('is_admin');
});
}
};
执行迁移
$ php artisan migrate
2、创建填充文件
$ php artisan make:seeder AdminSeeder
该命令会在 database/seeders
目录下生成一个 AdminSeeder.php
文件。
3、编写数据
database/seeders/AdminSeeder.php
<?php
namespace Database\Seeders;
use App\Models\User;
use Illuminate\Database\Seeder;
class AdminSeeder extends Seeder
{
public function run(): void
{
User::factory()->create(['is_admin'=>true]);
}
}
4、执行填充
# 清除数据
$ php artisan migrate:refresh
# 填充数据
$ php artisan db:seed
INFO Seeding database.
Database\Seeders\AdminSeeder ........................................................................................ RUNNING
Database\Seeders\AdminSeeder ...................................................................................... 3 ms DONE
请登录后再评论