Запуск Laravel Seeder из пакета

Я работаю над пакетом для внутреннего приложения Laravel, и у меня возникли проблемы с запуском сеялки, которая существует в каталоге пакета.

В файле composer.json моего пакета, расположенном в packages/vendor/packagename, я добавил следующее:

"autoload": {
    "psr-4": {
        "Vendor\\PackageName\\": "src/",
        "Vendor\\PackageName\\Database\\Factories\\": "database/factories/",
        "Vendor\\PackageName\\Database\\Seeders\\": "database/seeders/"
    }
},

У меня есть следующий файл, расположенный в "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();
    }
}

Затем я пытаюсь запустить следующую команду:

$ php artisan db:seed --class = "Vendor\\PackageName\\Database\\Seeders\\DepartmentSeeder"

Целевой класс [Vendor\PackageName\Database\Seeders\DepartmentSeeder] не существует.

Если я перемещу каталог сидеров в свой каталог src и запущу следующее, это сработает, но я бы предпочел оставить свои сидеры в каталоге моей базы данных.

$ php artisan db:seed --class = "Vendor\\PackageName\\seeders\\DepartmentSeeder"

Кто-нибудь знает, почему класс не найден? Все мои результаты поиска в Google фиолетовые, и я даже перешел на вторую страницу =/

Решение

В моем конкретном случае composer dump-autoload не помогло. В итоге я запустил composer update vendor/packagename, и какой бы ни была проблема, она была решена.

Надеюсь, это поможет всем, у кого могут быть похожие проблемы.

Привет Джош ;). Это исходный код команды . Может быть, попробуйте добавить `\` в начале пространства имен, чтобы это было корневое пространство имен, посмотрите, поможет ли это.

matiaslauriti 05.01.2023 20:38

Я не знаю, почему один \ убрали, используйте двойной \

matiaslauriti 05.01.2023 21:16

Я точно не знаю, почему, но я запустил команду обновления сообщения composer update vendor/packagename, и теперь она работает. Не знаю, почему composer dump-autoload не сработало =/

Josh 05.01.2023 21:28

Привет @Josh, если вы добавите свой собственный ответ в качестве ... ответа, вы можете пометить этот вопрос как ответ. Так же вы получите несколько баллов

UnderDog 05.01.2023 22:33
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
3
4
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В моем конкретном случае composer dump-autoload не помогло. В итоге я запустил composer update vendor/packagename, и какой бы ни была проблема, она была решена.

Надеюсь, это поможет всем, у кого могут быть похожие проблемы.

Другие вопросы по теме