Cannot resolve this error: "Target class [DatabaseSeeder] does not exist."
Cannot resolve this error: "Target class [DatabaseSeeder] does not exist."
很多人问过这个错误:Target class [DatabaseSeeder] 不存在。它似乎有很多根本原因,但我无法确定我的根本原因。
我正在使用 Laravel 6.20.43。在浏览器中运行时软件不会产生任何错误。
错误
当我使用这个命令时出现错误:php artisan db:seed
这里是DatabaseSeeder.php:
<?php
namespace Database\seeds;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Database\Eloquent\Model;
use App\User;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
// factory$this->call(UsersTableSeeder::class);
// factory(App\User::class, 10)->create();
// dd('DatabaseSeeder.php TESTING...');
}
}
我尝试了什么?
- 我尝试在 DatabaseSeeder::run() 中添加一个 dd(...)。 dd(...) 未执行。
- 我试过了
composer update
。更新执行得很好,但没有解决错误。
- 我在DatabaseSeeder.php中尝试了几个use子句。
- 我试过了
php artisan migrate:fresh
- 我尝试了几种解决方案的组合,例如 运行 在 dump-autoload 之前进行迁移,反之亦然。
- 我试过了
composer dump-autoload
,这是输出:
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
Generated optimized autoload files containing 4381 classes
- 我试图将
php artisan db:seed
的输出重定向到 xdebug,这样我就可以逐步分析发生了什么。好运是我在这里需要的,但我 运行 运气不好。
- 我已尝试使用
php artisan db:seed -vvv
检查错误。这是完整的输出:
Illuminate\Contracts\Container\BindingResolutionException : Target class [DatabaseSeeder] does not exist.
at /home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Container/Container.php:805
801|
802| try {
803| $reflector = new ReflectionClass($concrete);
804| } catch (ReflectionException $e) {
> 805| throw new BindingResolutionException("Target class [$concrete] does not exist.", 0, $e);
806| }
807|
808| // If the type is not instantiable, the developer is attempting to resolve
809| // an abstract type such as an Interface or Abstract Class and there is
Exception trace:
1 ReflectionException::("Class DatabaseSeeder does not exist")
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Container/Container.php:803
2 ReflectionClass::__construct()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Container/Container.php:803
3 Illuminate\Container\Container::build()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Container/Container.php:681
4 Illuminate\Container\Container::resolve()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:785
5 Illuminate\Foundation\Application::resolve()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Container/Container.php:629
6 Illuminate\Container\Container::make()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:770
7 Illuminate\Foundation\Application::make()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Database/Console/Seeds/SeedCommand.php:76
8 Illuminate\Database\Console\Seeds\SeedCommand::getSeeder()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Database/Console/Seeds/SeedCommand.php:63
9 Illuminate\Database\Console\Seeds\SeedCommand::Illuminate\Database\Console\Seeds\{closure}()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/GuardsAttributes.php:129
10 Illuminate\Database\Eloquent\Model::unguarded()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Database/Console/Seeds/SeedCommand.php:64
11 Illuminate\Database\Console\Seeds\SeedCommand::handle()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:36
12 Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Container/Util.php:37
13 Illuminate\Container\Util::unwrapIfClosure()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:93
14 Illuminate\Container\BoundMethod::callBoundMethod()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:37
15 Illuminate\Container\BoundMethod::call()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Container/Container.php:590
16 Illuminate\Container\Container::call()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Console/Command.php:134
17 Illuminate\Console\Command::execute()
/home/billybob/laravel-cursus1/vendor/symfony/console/Command/Command.php:255
18 Symfony\Component\Console\Command\Command::run()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Console/Command.php:121
19 Illuminate\Console\Command::run()
/home/billybob/laravel-cursus1/vendor/symfony/console/Application.php:1009
20 Symfony\Component\Console\Application::doRunCommand()
/home/billybob/laravel-cursus1/vendor/symfony/console/Application.php:273
21 Symfony\Component\Console\Application::doRun()
/home/billybob/laravel-cursus1/vendor/symfony/console/Application.php:149
22 Symfony\Component\Console\Application::run()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Console/Application.php:93
23 Illuminate\Console\Application::run()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:131
24 Illuminate\Foundation\Console\Kernel::handle()
/home/billybob/laravel-cursus1/artisan:37
我真的无法理解如何调试 php artisan db:seed -vvv
的输出。所有这些文件都位于供应商目录中,这意味着我无法轻松检查程序流程。也请说明我以后如何自己调试这样的错误。
找不到您的 DatabaseSeeder
class 因为您的命名空间不正确。
您需要将 DatabaseSeeder
class 的命名空间从:
更改为
namespace Database\seeds;
至:
namespace Database\Seeders;
确保您的 Composer 自动加载设置正确:
"autoload": {
"psr-4": {
"Database\Seeders\": "database/seeders/"
}
}
或者,从您的 DatabaseSeeder
class 并将上述更改还原为 composer.json
然后 运行:
composer dump-autoload
然后尝试 运行宁:
php artisan migrate:fresh --seed
很多人问过这个错误:Target class [DatabaseSeeder] 不存在。它似乎有很多根本原因,但我无法确定我的根本原因。 我正在使用 Laravel 6.20.43。在浏览器中运行时软件不会产生任何错误。
错误
当我使用这个命令时出现错误:php artisan db:seed
这里是DatabaseSeeder.php:
<?php
namespace Database\seeds;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Database\Eloquent\Model;
use App\User;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
// factory$this->call(UsersTableSeeder::class);
// factory(App\User::class, 10)->create();
// dd('DatabaseSeeder.php TESTING...');
}
}
我尝试了什么?
- 我尝试在 DatabaseSeeder::run() 中添加一个 dd(...)。 dd(...) 未执行。
- 我试过了
composer update
。更新执行得很好,但没有解决错误。 - 我在DatabaseSeeder.php中尝试了几个use子句。
- 我试过了
php artisan migrate:fresh
- 我尝试了几种解决方案的组合,例如 运行 在 dump-autoload 之前进行迁移,反之亦然。
- 我试过了
composer dump-autoload
,这是输出:
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
Generated optimized autoload files containing 4381 classes
- 我试图将
php artisan db:seed
的输出重定向到 xdebug,这样我就可以逐步分析发生了什么。好运是我在这里需要的,但我 运行 运气不好。 - 我已尝试使用
php artisan db:seed -vvv
检查错误。这是完整的输出:
Illuminate\Contracts\Container\BindingResolutionException : Target class [DatabaseSeeder] does not exist.
at /home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Container/Container.php:805
801|
802| try {
803| $reflector = new ReflectionClass($concrete);
804| } catch (ReflectionException $e) {
> 805| throw new BindingResolutionException("Target class [$concrete] does not exist.", 0, $e);
806| }
807|
808| // If the type is not instantiable, the developer is attempting to resolve
809| // an abstract type such as an Interface or Abstract Class and there is
Exception trace:
1 ReflectionException::("Class DatabaseSeeder does not exist")
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Container/Container.php:803
2 ReflectionClass::__construct()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Container/Container.php:803
3 Illuminate\Container\Container::build()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Container/Container.php:681
4 Illuminate\Container\Container::resolve()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:785
5 Illuminate\Foundation\Application::resolve()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Container/Container.php:629
6 Illuminate\Container\Container::make()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:770
7 Illuminate\Foundation\Application::make()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Database/Console/Seeds/SeedCommand.php:76
8 Illuminate\Database\Console\Seeds\SeedCommand::getSeeder()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Database/Console/Seeds/SeedCommand.php:63
9 Illuminate\Database\Console\Seeds\SeedCommand::Illuminate\Database\Console\Seeds\{closure}()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/GuardsAttributes.php:129
10 Illuminate\Database\Eloquent\Model::unguarded()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Database/Console/Seeds/SeedCommand.php:64
11 Illuminate\Database\Console\Seeds\SeedCommand::handle()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:36
12 Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Container/Util.php:37
13 Illuminate\Container\Util::unwrapIfClosure()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:93
14 Illuminate\Container\BoundMethod::callBoundMethod()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:37
15 Illuminate\Container\BoundMethod::call()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Container/Container.php:590
16 Illuminate\Container\Container::call()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Console/Command.php:134
17 Illuminate\Console\Command::execute()
/home/billybob/laravel-cursus1/vendor/symfony/console/Command/Command.php:255
18 Symfony\Component\Console\Command\Command::run()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Console/Command.php:121
19 Illuminate\Console\Command::run()
/home/billybob/laravel-cursus1/vendor/symfony/console/Application.php:1009
20 Symfony\Component\Console\Application::doRunCommand()
/home/billybob/laravel-cursus1/vendor/symfony/console/Application.php:273
21 Symfony\Component\Console\Application::doRun()
/home/billybob/laravel-cursus1/vendor/symfony/console/Application.php:149
22 Symfony\Component\Console\Application::run()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Console/Application.php:93
23 Illuminate\Console\Application::run()
/home/billybob/laravel-cursus1/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:131
24 Illuminate\Foundation\Console\Kernel::handle()
/home/billybob/laravel-cursus1/artisan:37
我真的无法理解如何调试 php artisan db:seed -vvv
的输出。所有这些文件都位于供应商目录中,这意味着我无法轻松检查程序流程。也请说明我以后如何自己调试这样的错误。
找不到您的 DatabaseSeeder
class 因为您的命名空间不正确。
您需要将 DatabaseSeeder
class 的命名空间从:
namespace Database\seeds;
至:
namespace Database\Seeders;
确保您的 Composer 自动加载设置正确:
"autoload": {
"psr-4": {
"Database\Seeders\": "database/seeders/"
}
}
或者,从您的 DatabaseSeeder
class 并将上述更改还原为 composer.json
然后 运行:
composer dump-autoload
然后尝试 运行宁:
php artisan migrate:fresh --seed