从包运行 Laravel Seeder

Jos*_*osh 6 package autoload laravel laravel-seeding laravel-package

我正在为内部 Laravel 应用程序开发一个包,但在运行包目录中存在的播种器时遇到问题。

在位于packages/vendor/packagename 的包的composer.json 文件中,我添加了以下内容:

"autoload": {
    "psr-4": {
        "Vendor\\PackageName\\": "src/",
        "Vendor\\PackageName\\Database\\Factories\\": "database/factories/",
        "Vendor\\PackageName\\Database\\Seeders\\": "database/seeders/"
    }
},
Run Code Online (Sandbox Code Playgroud)

我有以下文件位于“packages/vendor/packagename/database/seeders/DepartmentSeeder.php”

<?php

namespace Vendor\PackageName\Database\Seeders;

use Illuminate\Database\Seeder;
use Vendor\PackageName\Models\Department;

class DepartmentSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Department::factory()->count(10)->create();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试运行以下命令:

$ php artisan db:seed --class="Vendor\\PackageName\\Database\\Seeders\\DepartmentSeeder"
Run Code Online (Sandbox Code Playgroud)

目标类 [Vendor\PackageName\Database\Seeders\DepartmentSeeder] 不存在。

如果我将播种机目录移至 src 目录并运行以下命令,它会起作用,但我宁愿将播种机保留在数据库目录中。

$ php artisan db:seed --class="Vendor\\PackageName\\seeders\\DepartmentSeeder"
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么找不到该课程吗?我所有的谷歌搜索结果都是紫色的,我什至去了第二页=/

解决方案

就我的具体情况而言,composer dump-autoload并没有达到目的。我最终所做的就是跑步composer update vendor/packagename,无论问题是什么,它都得到了解决。

希望这对可能遇到类似问题的其他人有所帮助。

Jos*_*osh 2

就我的具体情况而言,composer dump-autoload并没有达到目的。我最终所做的就是跑步composer update vendor/packagename,无论问题是什么,它都得到了解决。

希望这对可能遇到类似问题的其他人有所帮助。