我想在用户登录时在整个项目中使用一些自定义值。我在控制器中编写一个函数,但每次调用该静态方法都会使代码变得有点冗长。而不是调用函数我想为Auth::user()
分配一个自定义值,所以我可以在项目的任何地方使用它。我在代码下面尝试了它但是它不起作用
public static function getUserDetailById($id){
//Do Something and assign value to $custom_val
Auth::user()->custom = $custom_val;
}
但它不适用于任何控制器或视图。我试图检查Auth::user()
中的自定义值,但它已丢失。
有没有办法在不在表格中添加新列的情况下向Auth::user()
添加自定义值?
答案 0 :(得分:4)
很简单。您可以为此创建一个Accessor。
应用\ user.php的
public function getCustomAttribute()
{
return 'Custom attribute';
}
现在,您可以使用以下方式访问它:
echo Auth::user()->custom;
更多信息:
https://laravel.com/docs/5.4/eloquent-mutators#defining-an-accessor
答案 1 :(得分:1)
将custom
添加到您的User
模型$appends
数组中。
protected $appends = [ 'custom' ];
答案 2 :(得分:0)
您可以在用户模型上定义一个函数和访问器以根据逻辑获取不同的数据-
// 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();