ReflectionException:类ClassName不存在 - Laravel

Nan*_*kar 43 php laravel laravel-5 artisan

很快,我正在输入php artisan db:seed命令.

我得错误了:

[ReflectionException]
类UserTableSeeder不存在

root@dd-desktop:/opt/lampp/htdocs/dd/laravel# php artisan db:seed

在这里,是我的UserTableSeeder.phpDatabaseSeeder.phpPage

UserTableSeeder.php

<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class UserTableSeeder extends Seeder
{    
    public function run()
    {
        DB::table('users')->delete();
        User::create(array(
        'name'     => 'Chris Sevilleja',
        'username' => 'sevilayha',
        'email'    => 'chris@scotch.io',
        'password' => Hash::make('awesome'),
        ));
    }    
}
Run Code Online (Sandbox Code Playgroud)

DatabaseSeeder.php

<?php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //Model::unguard();

        Eloquent::unguard();
        $this->call('UserTableSeeder');

        //$this->call(UserTableSeeder::class);

        //Model::reguard();
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在引用此链接来设计和开发登录页面.请帮我解决这个问题.谢谢.

Ahm*_*eri 111

composer update然后执行a composer dump-autoload.

如果以上操作不解决问题,改变classmap你的composer.json文件,使之包含项目相关的路径到你的PHP文件:

"autoload-dev": {
    "classmap": [
        "tests/TestCase.php",
        "database/seeds/UserTableSeeder.php" //include the file with its path here
    ]
}, /** ... */
Run Code Online (Sandbox Code Playgroud)

不久之后,执行一个composer dump-autoload,它现在应该像微风一样工作!

由@JMSamudio编辑

如果composer dump-autoload找不到,只需启用此选项composer config -g -- disable-tls true.

  • Bingo,我认为如果你在`Models`文件夹中有`User`模型,该行应该是'App\User`或`App\Models\User`. (2认同)
  • 老但金,感谢这位好友! (2认同)

Kam*_*ert 14

根据我的经验,当您尝试调用的类有一些错误并且无法编译时,这将显示在大部分时间.请检查未反映的课程是否可以自行执行.

  • 这就是我 - 很难追查! (4认同)
  • 如果“composer dump-autoload”无法修复它,请尝试此操作。在一种情况下,我的命名空间错误 (2认同)

小智 11

A composer dump-autoload应该修复它.


Ada*_*han 5

我遇到了这个问题,我可以通过执行php artisan config:cache. 问题是我之前已经运行过该命令,后来又包含了一些新的播种机类。缓存的配置无法识别新类。所以再次运行该命令有效。

如果您发现自己经常更改以包含新的播种机类,请考虑运行php artisan config:clear. 这将使您能够根据需要进行任意数量的更改,然后在测试之后您可以config:cache再次运行以使事情再次以最佳方式运行。


Luc*_*aga 5

我有同样的问题class。我试过了composer dump-autoloadphp artisan config:clear但没有解决我的问题。

然后我决定阅读我的代码以找到问题,我找到了问题。我的问题是我班上缺少逗号。查看我的型号代码:

{
    protected
    $fillable = ['agente_id', 'matter_id', 'amendment_id', 'tipo_id'];

    public
    $rules = [
        'agente_id' => 'required', // <= See the comma
        'tipo_id' => 'required'
    ];

    public
    $niceNames = [
        'agente_id' => 'Membro', // <= This comma is missing on my code
        'tipo_id' => 'Membro'
    ];
}
Run Code Online (Sandbox Code Playgroud)

  • 我无法相信像这样的小错误会导致如此误导性的错误消息,但是是的,它发生了。谢谢,你可能用这个帮我节省了几个小时。 (2认同)

小智 5

检查您的大小写!

你的主机系统(Windows 或 Mac)默认不区分大小写,Homestead 继承了这个行为。另一方面,您的生产服务器区分大小写。

每当您收到ClassNotFound异常时,请检查以下内容:

  1. 拼写
  2. 命名空间
  3. 大写