【问题标题】:Class '\App\User' not found in Laravel when changing the namespace更改命名空间时在 Laravel 中找不到类“\App\User”
【发布时间】:2016-06-19 16:32:21
【问题描述】:

User.php 移动到Models/User.php 时出现此错误

local.ERROR: Symfony\Component\Debug\Exception\FatalThrowableError: 致命错误: 找不到类“\App\User”

vendor/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php:126

【问题讨论】:

    标签: laravel laravel-5.2


    【解决方案1】:

    转到 config/auth.php 并将 App\User:class 更改为 App\Models\User::class。

    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\Models\User::class,
        ],
    

    同时更改 User.php 模型的命名空间

    namespace App\Models;
    

    【讨论】:

    • 如果你和我一样有同样的问题并且按照描述做了所有事情并且错误仍然发生尝试像这样清除配置缓存:php artisan config:cachephp artisan config:clear
    • 没有人指向命名空间 App\Models;在其他答案中
    • 谢谢。我忘记更改用户模型的命名空间
    • 我像您的帮助一样更改了我的项目,所以它对我不起作用。谁能帮帮我。
    • 更改您的 auth.php 后添加此命令帮助我删除了以前配置的缓存 rm bootstrap/cache/config.php
    【解决方案2】:

    如果你在 Laravel (php artisan make:auth) 上使用默认的身份验证,你必须更改 app/Http/Controllers/Auth/ 上的 RegisterController

    use App\User;
    

    use App\Models\User;
    

    此外,对于其余功能,您已更改用户模型上的命名空间:

    namespace App\Models;
    

    并更改 config/auth.php

    'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\User::class,
    ],
    

    【讨论】:

      【解决方案3】:

      这些答案都不对,你不需要把命名空间改成\App\Models\User。自动加载将加载模型文件夹,但类仍可以是class User,命名空间仍应为App。你的文件是这样设置的吗?

      namespace App;
      
      class User extends Model {}
      

      【讨论】:

        【解决方案4】:

        重新加载 composer 自动加载的类。

        composer dump-autoload
        

        【讨论】:

          【解决方案5】:

          我使用的是 Laravel 8x,并在 .php

          的顶部找到了一个简单的想法
          use App\Models\User
          

          【讨论】:

          • 虽然这段代码可以为这个问题提供一个解决方案,但最好添加上下文来说明它为什么/如何工作。这可以帮助未来的用户参考并最终将这些知识应用到他们自己的代码中。解释代码时,您也可能会得到用户的积极反馈/赞成。
          • 请更改型号的拼写。
          【解决方案6】:

          我终于能够通过更改以下代码来解决它。

           array (
                  'driver' => 'eloquent',
                  'model' => 'App\\Models\User',
                ),
          

          【讨论】:

          【解决方案7】:

          如果app config被缓存了,可能无法获取到新的配置,因为config:cache在清除和缓存配置之前就给出了这个错误,所以手动删除缓存就好了:

          rm bootstrap/cache/config.php
          

          【讨论】:

            【解决方案8】:

            如果您使用 user.php 模型文件到文件夹 Models/user.php 那么您需要更改以下文件,这样您就不会收到任何错误

            如果我们在 App\http 中创建模型文件夹,应该在哪里更改??

            改变路径---

            1 配置 - - auth.php - 搜索用户密钥更改 ---> app\user TO app\Models\user

            2 供应商/作曲家/ -autoload_classmap.php ----> 基本路径(app\user TO app\Models\user) -autoload_static.php ----> 基本路径(app\user TO app\Models\user)

            【讨论】:

              【解决方案9】:

              对我来说解决问题的是改变:

                          'model' => '{YourAppName}\User',
              

              【讨论】:

                【解决方案10】:

                发生的事情是您更改了文件 user.php 的位置。

                您的系统仍在旧位置寻找文件 user.php。您需要为系统提供正确的文件路径。

                我猜你必须将代码从 'model' => App\User::class 更改为

                'model' => App\Models\User::class,

                【讨论】:

                  【解决方案11】:

                  我解决了将use App\User; 更改为use MyAppName\User; 的问题

                  【讨论】:

                    【解决方案12】:

                    这个问题是configcache的设置之一,通过在终端执行以下命令,90%的问题就解决了

                    config:clear
                    cache:clear
                    config:cache
                    

                    【讨论】:

                    • 哇!天才。除了这个,其他答案都不适合我。但是,您需要编辑答案以在命令中包含前缀 php artisan,否则将无法识别命令。因此,正确的命令是php artisan config:clearphp artisan cache:clearphp artisan config:cache。谢谢
                    【解决方案13】:

                    几天前我遇到了同样的问题。所以我这样做了:运行这个命令

                    php artisan config:cache 
                    php artisan config:clear
                    

                    它解决了我的问题。大多数问题都由此解决。 我建议先尝试一下,如果这不能解决您的问题,请尝试其他技巧。

                    【讨论】:

                      【解决方案14】:

                      你需要在config/auth.php中把App\User改成App\Models\User

                      【讨论】:

                        【解决方案15】:

                        检查您的输入是否代表您班级的确切名称。我发现在我的一个控制器中,我被导入 App\user,小写字母“u”而不是 App\User,大写字母“u”

                        【讨论】:

                          【解决方案16】:

                          我只是将 use app\User 改为 use App\User 就可以了

                          【讨论】:

                          • 你能进一步解释你的答案吗?它如何以及为什么起作用?
                          • 如果您的服务器是 Linux,则取决于服务器,如果您的服务器是 Windows,则区分大小写,然后忽略 App 大写或小写字母
                          猜你喜欢
                          • 2019-08-10
                          • 1970-01-01
                          • 2015-09-23
                          • 1970-01-01
                          • 1970-01-01
                          • 2018-10-04
                          • 1970-01-01
                          • 2021-12-28
                          相关资源
                          最近更新 更多