10、Laravel 11 数据填充

作者: 温新

图书: 【Laravel 11 构建 Web 应用与管理后台】

阅读: 148

时间: 2024-05-18 18:23:13

一切准备就绪,就差数据了。之前的学习中,我们是手动添加数据的,这就累死个人了。现在呢,我们就便捷一点,使用填充文件进行数据填充。

怎么进行数据填充?来了解下相关目录:

$ 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
请登录后再评论