【问题标题】:How to add custom value to Auth::user() in Laravel如何在 Laravel 中向 Auth::user() 添加自定义值
【发布时间】:2018-01-18 12:20:24
【问题描述】:

当用户登录时,我想在整个项目中使用一些自定义值。我正在控制器中编写一个函数,但每次调用该静态方法都会使代码有点冗长。我不想调用函数,而是想为Auth::user() 分配一个自定义值,这样我就可以在项目的任何地方使用它。我在下面的代码中尝试过,但它不起作用

public static function getUserDetailById($id){
      //Do Something  and assign value to $custom_val
      Auth::user()->custom = $custom_val;
}

但它不适用于任何控制器或视图。我试图检查 Auth::user() 中的自定义值,但它丢失了。

有没有什么方法可以在不向表格中添加新列的情况下向Auth::user() 添加自定义值?

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    这很简单。您可以为此创建一个访问器。

    应用\用户.php

    public function getCustomAttribute()
    {
        return 'Custom attribute';
    }
    

    现在,您可以在任何地方使用:

    echo Auth::user()->custom;
    

    更多信息:

    https://laravel.com/docs/5.4/eloquent-mutators#defining-an-accessor

    【讨论】:

      【解决方案2】:

      custom 添加到您的User 模型$appends 数组中。

      protected $appends = [ 'custom' ];
      

      【讨论】:

      • 谢谢!这正是我在前端提供额外字段所需要的。
      • 我怎么会错过这个?我的代码上已经有了它!谢谢。文档链接:laravel.com/docs/6.x/…
      【解决方案3】:

      您可以在用户模型上定义一个函数和访问器,以根据逻辑获取不同的数据-

      // This method will help you to get complete table data as per need
      public function xyz() 
      {
          return XyzModel::where('user_id', $this['id'])->first();
      }
      
      // Accessor
      public function getXyzIdAttribute()
      {
           return $this->xyz()->id ?? null;
      }
      

      现在您可以获得自定义数据以及 XYZ 模型的完整数据集。

      Auth::user()->xyz_id; // return the id of xyz_model via accessor
      
      Auth::user()->xyz();
      

      【讨论】:

        猜你喜欢
        • 2020-01-23
        • 2017-09-10
        • 2018-05-07
        • 2019-05-06
        • 2020-11-06
        • 2020-05-15
        • 2017-06-05
        • 2020-07-16
        • 2017-03-06
        相关资源
        最近更新 更多