【问题标题】:Problem Seeding the database after using nwidart package in Laravel在 Laravel 中使用 nwidart 包后播种数据库的问题
【发布时间】:2019-12-31 12:31:54
【问题描述】:

我正在 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 模块中运行播种器类的具体命令。

【问题讨论】:

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


    【解决方案1】:

    在我的情况下,当模块在子文件夹中并且想要直接运行而不运行其他播种机时

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

    【讨论】:

      【解决方案2】:

      要运行此种子,您需要执行 2 个步骤:

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

      $this-&gt;call(PermissionTableSeeder::class);

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

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

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

      【讨论】:

        猜你喜欢
        • 2020-04-04
        • 2017-11-27
        • 2014-03-01
        • 2015-09-25
        • 2020-08-04
        • 1970-01-01
        • 1970-01-01
        • 2016-02-10
        相关资源
        最近更新 更多