簡體   English   中英

如何在 Laravel 中為 Auth::user() 添加自定義值

[英]How to add custom value to Auth::user() in Laravel

當用戶登錄時,我想在整個項目中使用一些自定義值。我正在控制器中編寫一個函數,但每次調用該靜態方法會使代碼有點冗長。 我不想調用函數,而是想為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

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

現在,您可以使用以下方式在任何地方訪問它:

echo Auth::user()->custom;

更多信息:

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

custom添加到您的User模型$appends數組。

protected $appends = [ 'custom' ];

您可以在用戶模型上定義一個函數和訪問器以根據邏輯獲取不同的數據-

// 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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM