Я работаю над пакетом для внутреннего приложения 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
, и какой бы ни была проблема, она была решена.
Надеюсь, это поможет всем, у кого могут быть похожие проблемы.
Я не знаю, почему один \ убрали, используйте двойной \
Я точно не знаю, почему, но я запустил команду обновления сообщения composer update vendor/packagename
, и теперь она работает. Не знаю, почему composer dump-autoload
не сработало =/
Привет @Josh, если вы добавите свой собственный ответ в качестве ... ответа, вы можете пометить этот вопрос как ответ. Так же вы получите несколько баллов
В моем конкретном случае composer dump-autoload
не помогло. В итоге я запустил composer update vendor/packagename
, и какой бы ни была проблема, она была решена.
Надеюсь, это поможет всем, у кого могут быть похожие проблемы.
Привет Джош ;). Это исходный код команды . Может быть, попробуйте добавить `\` в начале пространства имен, чтобы это было корневое пространство имен, посмотрите, поможет ли это.