【问题标题】:Class Database\Seeds\PermissionsTableSeeder does not exist类 Database\Seeds\PermissionsTableSeeder 不存在
【发布时间】:2019-12-23 16:09:17
【问题描述】:

我已签出,类 PermissionsTableSeeder 存在路径:Database\Seeds\PermissionsTableSeeder

另外,我试过了:

composer dump-autoload

php artisan cache:clear

当我运行命令时:php artisan db:seed 它给了我一个例外:

ReflectionException : 类 Database\Seeds\PermissionsTableSeeder 不存在

在 C:\Projects\secure_secure\vendor\laravel\framework\src\Illuminate\Container\Container.php:790 786| if ($concrete instanceof Closure) { 787|返回 $concrete($this, $this->getLastParameterOverride()); 788| } 789|

790| $reflector = new ReflectionClass($concrete); 791| 792| // 如果类型不可实例化,开发者正在尝试解析 793| // 一个抽象类型,例如接口或抽象类,并且有 794| // 没有为抽象注册绑定,所以我们需要退出。

异常跟踪:

1
ReflectionClass::__construct("Database\Seeds\PermissionsTableSeeder") C:\Projects\secure_secure\vendor\laravel\framework\src\Illuminate\Container\Container.php:790

2
Illuminate\Container\Container::build("Database\Seeds\PermissionsTableSeeder") C:\Projects\secure_secure\vendor\laravel\framework\src\Illuminate\Container\Container.php:667

如何解决?

【问题讨论】:

    标签: laravel laravel-5 laravel-5.8


    【解决方案1】:

    laravel 中没有Database\Seeds\ 命名空间,并且播种机默认没有命名空间。

    请检查DatabaseSeeder.php你应该有这个功能:

    public function run()
    {
        .....
        $this->call(PermissionsTableSeeder::class);
    }
    

    还要检查您是否没有将任何命名空间分配给DatabaseSeeder 类或PermissionsTableSeeder 类。

    您还应该删除DatabaseSeeder.php 中以use Database\Seeds 开头的所有行,因为该命名空间 不存在。

    【讨论】:

    • 我在 DatabaseSeeder.php 中有这个:` $this->call(PermissionsTableSeeder::class);`
    • 请检查您在两个类中都没有命名空间指令
    • 正如我上面所说,没有Database\Seeds 命名空间,请注释掉播种机中所有以use Database\Seeds 开头的行。
    • @OPV - 有一个名为种子的文件夹,这让人感到困惑......但正如 dparoli 所说,没有 命名空间。这是正确的答案 - 正如他在 cmets 中所说,删除您班级中的 use 内容。
    • 你不应该在任何班级写use Database\Seeds\{anythingclass}。如果您有此use 行请删除它,这是错误的原因
    【解决方案2】:

    我换了database/seeds/DatabaseSeeder.php

    <?php
    
    use Illuminate\Database\Seeder;
    use Illuminate\Database\Eloquent\Model;
    use Database\Seeds\PermissionsTableSeeder;
    use Database\Seeds\RolesTableSeeder;
    use Database\Seeds\ConnectRelationshipsSeeder;
    
    class DatabaseSeeder extends Seeder
    {
        /**
         * Run the database seeds.
         *
         * @return void
         */
        public function run()
        {
            Model::unguard();
    
                $this->call(PermissionsTableSeeder::class);
                $this->call(RolesTableSeeder::class);
                $this->call(ConnectRelationshipsSeeder::class);
                //$this->call('UsersTableSeeder');
    
            Model::reguard();
        }
    }
    

    <?php
    
    use Illuminate\Database\Seeder;
    use Illuminate\Database\Eloquent\Model;
    use Database\Seeds\PermissionsTableSeeder;
    use Database\Seeds\RolesTableSeeder;
    use Database\Seeds\ConnectRelationshipsSeeder;
    
    class DatabaseSeeder extends Seeder
    {
        /**
         * Run the database seeds.
         *
         * @return void
         */
        public function run()
        {
            Model::unguard();
    
                $this->call('PermissionsTableSeeder');
                $this->call('RolesTableSeeder');
                $this->call('ConnectRelationshipsSeeder');
                //$this->call('UsersTableSeeder');
    
            Model::reguard();
        }
    }
    

    这解决了我的错误

    php artisan db:seed
        Seeding: DefaultPermissionitemsTableSeeder
    Seeding: DefaultRoleItemsTableSeeder
    Seeding: DefaultConnectRelationshipsSeeder
    Seeding: DefaultConnectRelationshipsSeeder - Role:Admin attached to Permission:view.users
    Seeding: DefaultConnectRelationshipsSeeder - Role:Admin attached to Permission:create.users
    Seeding: DefaultConnectRelationshipsSeeder - Role:Admin attached to Permission:edit.users
    Seeding: DefaultConnectRelationshipsSeeder - Role:Admin attached to Permission:delete.users
    Seeding: PermissionsTableSeeder
    
       ReflectionException  : Class Database\Seeds\RolesTableSeeder does not exist
    
      at D:\Work\Coding\Laravel\Epox\vendor\laravel\framework\src\Illuminate\Container\Container.php:788
        784|         if ($concrete instanceof Closure) {
        785|             return $concrete($this, $this->getLastParameterOverride());
        786|         }
        787|
      > 788|         $reflector = new ReflectionClass($concrete);
        789|
        790|         // If the type is not instantiable, the developer is attempting to resolve
        791|         // an abstract type such as an Interface or Abstract Class and there is
        792|         // no binding registered for the abstractions so we need to bail out.
    
      Exception trace:
    
      1   ReflectionClass::__construct("Database\Seeds\RolesTableSeeder")
          D:\Work\Coding\Laravel\Epox\vendor\laravel\framework\src\Illuminate\Container\Container.php:788
    
      2   Illuminate\Container\Container::build("Database\Seeds\RolesTableSeeder")
          D:\Work\Coding\Laravel\Epox\vendor\laravel\framework\src\Illuminate\Container\Container.php:667
    
      Please use the argument -v to see more details.
    

    php artisan db:seed
        Seeding: DefaultPermissionitemsTableSeeder
    Seeding: DefaultRoleItemsTableSeeder
    Seeding: DefaultConnectRelationshipsSeeder
    Seeding: DefaultConnectRelationshipsSeeder - Role:Admin attached to Permission:view.users
    Seeding: DefaultConnectRelationshipsSeeder - Role:Admin attached to Permission:create.users
    Seeding: DefaultConnectRelationshipsSeeder - Role:Admin attached to Permission:edit.users
    Seeding: DefaultConnectRelationshipsSeeder - Role:Admin attached to Permission:delete.users
    Seeding: PermissionsTableSeeder
    Seeding: RolesTableSeeder
    Seeding: ConnectRelationshipsSeeder
    
    php artisan --version
        Laravel Framework 5.8.36
    

    【讨论】:

      猜你喜欢
      • 2020-01-21
      • 2019-03-04
      • 2011-07-19
      • 1970-01-01
      • 2016-07-15
      • 2020-11-21
      • 2018-09-24
      • 2021-09-08
      • 2020-11-13
      相关资源
      最近更新 更多