Laravel—数据库填充及设置自定义

数据库填充

数据库填充是Larevel中的一个快速向数据表插入测试数据的方法,Laravel使用填充类来提供方法,填充类位于database/seeds目录下

创建填充器

通过Artisan命令:make:seeder创建一个填充文件,位于database/seeds目录

php artisan make:seeder XXXTableSeeder;

一个填充器类默认只包含一个方法:run,在其中可以插入任何想插入数据库的数据

<?php

use Illuminate\Database\Seeder;

class TestTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //在这里可以编写数据库操作
        //可以使用构建器或者DB门面方法
    }
}

运行填充器

编写好填充器后,需要先通过dump-autoload命令生成Composer自动加载器:

composer dump-autoload

之后使用Artisan命令db:seed来填充数据,默认情况下db:seed 命令运行DatabaseSeeder,可以使用--class选项来指定想要运行的独立的填充器类:

php artisan db:seed
php artisan db:seed –class=TestTableSeeder

使用填充的两种方法:

方法一:

创建填充器->编写填充器->composer dump-autoload->运行指令php artisan db:seed --class=类名

方法二:
创建填充器->编写填充器->在DatabaseSeeder文件的run方法中是使用call方法->composer dump-autoload-> 运行指令php artisan db:seed

/**
 * 运行数据库填充
 *
 * @return void
 */
public function run(){
    $this->call(UsersTableSeeder::class);
    $this->call(PostsTableSeeder::class);
    $this->call(CommentsTableSeeder::class);
}

设置自定义函数和自定义类文件

在项目下的composer.json中添加“autoload”中添加files属性

"autoload": {
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "psr-4": {
            "App\\": "app/"
        },
        
        //在这里增加files属性,其中指定自定义的函数或类的路径
        "files":[
            "app/Library/helper.php"
        ]
    },

之后运行composer dump-auto