在Laravel中使用nwidart包后,问题播种数据库

时间:2019-08-27 10:31:42

标签: laravel laravel-5 migration laravel-5.8 laravel-seeding

我正在Laravel中创建一个模块化应用程序,并使用了一个名为nwidart的软件包。我还将Spatie软件包用于基于角色和权限的ACL。效果很好,我已经使用以下命令在我的模块内部创建了一个称为API的种子类

php artisan module:make-seed PermissionTableSeeder API

这已在Modules/API/Database/Seeders directory内创建了一个种子文件。我进一步编辑了种子文件中的代码,如下所示:

<?php

namespace Modules\API\Database\Seeders;

use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Permission;

class PermissionTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {

        $permissions = [
            'role-list',
            'role-create',
            'role-edit',
            'role-delete',
            'blog-list',
            'blog-create',
            'blog-edit',
            'blog-delete'
         ];

        foreach ($permissions as $permission) {
            Permission::create(['name' => $permission]);
        }
    }
}

问题不知道要在API模块中运行种子器类的特定命令。

2 个答案:

答案 0 :(得分:1)

要运行此种子,您将经历2个步骤:

1-如果您没有更改主模块播种器,请转到Modules\API\Database\Seeders\APIDatabaseSeeder并将以下行添加到运行功能:

$this->call(PermissionTableSeeder::class);

请注意,在运行命令之前,您需要使用PermissionTableSeeder类。

2-运行: php artisan模块:种子API

检查文档以获取更多信息https://nwidart.com/laravel-modules/v6/advanced-tools/artisan-commands#moduleseed

答案 1 :(得分:0)

在我的情况下,当模块位于子文件夹中并且想直接运行而无需运行其他播种器时

php artisan db:seed --class=WM\Common\Seeder\SmsStatusSeeder