【问题标题】:Laravel 5 want to access auth user id in modelLaravel 5想要访问模型中的auth用户ID
【发布时间】:2018-11-06 22:17:34
【问题描述】:

我想访问模型中当前登录的用户 ID。所以在模型中,我已经写好了代码;

namespace App\Model;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
use Auth;

在模型下的方法中,我使用了这个代码:Auth::user()->id 但是,我收到错误:

试图获取非对象的属性

【问题讨论】:

标签: laravel laravel-5


【解决方案1】:

您必须先登录才能获取当前登录的用户。

在使用前尝试检查登录用户

if (Auth::user()) {   // Check is user logged in
           // do stuff

        } 

【讨论】:

  • I dd(Auth::user()) 在模型中,但它返回 null。相信我,我已经登录了。
【解决方案2】:

要检索您必须使用的 id:

Auth::id()

像您尝试的那样访问其他用户属性

Auth::user()->otherProperties

【讨论】:

  • 适用于控制器但不适用于模型。
  • 您是否使用 php artisan make:auth 实现了登录/注册?奇怪的是,当您使用 use\Auth.. 时,它不适用于模型。
  • 如果您发布模型,以及模型控制器的路线,我可以尝试帮助您弄清楚
  • 我没有用 php artisan 创建模型。模型的代码写在我上面的问题中。
  • 你在你的 php 类中使用“扩展模型”吗?
【解决方案3】:

首先您需要检查是否存在登录用户,然后检查 id

  if (Auth::check()) {
  //there is a user logged in, now to get the id
     Auth::user()->id
  }

【讨论】:

  • 当我在控制器中使用代码时它可以工作,但在模型中却不行。
【解决方案4】:
 use Illuminate\Support\Facades\Auth;

// 获取当前认证的用户...

$user = Auth::user();

//获取当前认证用户的ID...

$id = Auth::id();

【讨论】:

    【解决方案5】:

    您可以在模型中轻松登录用户 ID。试试下面的代码。效果很好。

    app('Illuminate\Contracts\Auth\Guard')->user()->id;
    

    【讨论】:

    • 不,实际上我从 AppserviceProvider 调用了 db 方法,因此它没有找到 Auth ID,因为 Appserviceprovider 在 auth 加载之前调用。
    • DB 和 Auth 都是不同的。你可以很容易地得到这个。我已经尝试过使用 Illuminate\Support\Facades\DB;
    【解决方案6】:

    Auth::user() 仅检查 Web Guard。您可能正在使用 API 尝试此操作。这将为您提供用户:

    $user = \Auth::user() ?? \Auth::guard("api")->user();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-14
      • 1970-01-01
      • 2016-08-18
      • 2016-04-22
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多