Ben*_*LOT 1 composer-php laravel-7
我有一个 Laravel 7 的应用程序,我将 Composer 1.10 升级到 Composer 2.0,但遇到了这个问题:
Illuminate\Contracts\Container\BindingResolutionException
Target class [DatabaseSeeder] does not exist.
at vendor/laravel/framework/src/Illuminate/Container/Container.php:807
803|
804| try {
805| $reflector = new ReflectionClass($concrete);
806| } catch (ReflectionException $e) {
> 807| throw new BindingResolutionException("Target class [$concrete] does not exist.", 0, $e);
808| }
809|
810| // If the type is not instantiable, the developer is attempting to resolve
811| // an abstract type such as an Interface or Abstract Class and there is
+37 vendor frames
38 artisan:37
Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
Run Code Online (Sandbox Code Playgroud)
我尝试了很多解决方案(即使是 Laravel 8 ...)但没有成功。
这是composer.json的自动加载
"psr-4": {
"App\\": "app/",
"DatabaseSeeder\\": "database/seeds"
},
"files": [
"app/helpers.php"
]
}
Run Code Online (Sandbox Code Playgroud)
谢谢 !
这是我刚刚发现的:当我添加到composer.json中时:
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Factories\\": "database/factories",
"Database\\Seeds\\": "database/seeds",
"DatabaseSeeder\\": "database/seeds/",
} },
Run Code Online (Sandbox Code Playgroud)
我修改了 SeedCommand.php 'src/vendor/laravel/framework/src/Illuminate/Database/Console/Seeds/SeedCommand.php' 的第 84 行,它起作用了!
$class = $this->laravel->make($this->input->getOption('class'));
Run Code Online (Sandbox Code Playgroud)
经过
$class = $this->laravel->make('Database\\Seeds\\DatabaseSeeder');
Run Code Online (Sandbox Code Playgroud)
但这是绝对不可维护的...所以问题是,DatabaseSeeder设置的时候出现了问题。
6一个想法?
我找到了解决方案:Laravel 文档:https ://laravel.com/docs/7.x/seeding#introduction
所有种子类都存储在database/seeds 目录中...默认情况下,已为您定义了DatabaseSeeder 类。
该文件夹与 PSR-4 不兼容,因此您必须在 Laravel 7 中使用composer.json 中的类映射。
因此,还需要删除种子文件中的名称空间。
这是我的作曲家 json:
"autoload": {
"psr-4": {
"App\\": "app/",
},
"classmap": [
"database/seeds",
"database/factories"
],
"files": [
"app/helpers.php"
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5352 次 |
| 最近记录: |