Laravel Auth::user() 没有针对用户模型函数的代码完成

Laravel Auth::user() has no code completion for User model functions

我正在使用 Laravel 和 PHPStorm。

当我用 Auth::user().

调用它时,自动完成适用于所有模型,但不适用于 'User'

当我调用 Auth::user() 时,我得到了正确的用户对象,但是 Auth::user() 的 return 类型是 Authenticatable 而不是 User。所以我的用户对象没有代码完成,这很烦人,因为我经常使用它。我认为问题与 Auth::user() 的 return 类型有关,因为它是 Authenticatable 而不是 User.

config/auth.php中我已经将模型设置为app/User::class

你能告诉我如何将 return 值转换为用户模型吗?

在此 example 中您可以看到行为。

Auth::user()   

Auth 是 config/app.php 中 ServiceProviders 数组的别名,如果你直接使用 use Illuminate\Support\Facades\Auth; 你将在 PHPstorm 和 Sublime 中得到很好的完成,但这取决于IDE.

将 laravel-ide-helper 包添加到您的项目中 - https://github.com/barryvdh/laravel-ide-helper.

该软件包为 IDE 生成一个包含所有 Facade 及其功能的帮助文件。 它修复了 Facades 自动完成,因此 Auth::user() 也得到修复

我知道这是一个旧的 post,但尽管使用了 ide-helper,我仍然看到这个问题。

在我的 Laravel 应用程序中,Eloquent 模型 App\User 设置为 /config/auth 中的“User Providers”。php :

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

我刚刚通过 运行 重建了文件 _ide_helper.phpphp artisan ide-helper:generate 这就是我看到的 Auth()::user()

     * Get the currently authenticated user.
     *
     * @return \App\User|null \this is desired
     * @static 
     */ 
    public static function user()
    {
                    /** @var \Illuminate\Auth\SessionGuard $instance */
                    return $instance->user();
    }

查看 _ide_helper.php 文件,我看到了这个:

这会导致不需要的类型提示:

最终结果是,即使使用 ide-helper,我仍然看到 OP 描述的完成问题。

此处提供的解决方案解决了很多相关问题(ide-helper 包是天赐之物),但我仍然遇到 OP 的问题并且 provided 的答案没有帮助.