我的用户模型有3个字段:username、password和category_id因此,当我进行身份验证时,auth对象将具有所有这3个变量,但我想添加其他模型上的类别的名称我觉得:
$category = Category::find(Auth::user()->category_id);
$category_name = $category->name;
所以问题是,我可以向Auth::user()对象添加$category_name,以便在每次他像这样登录时重试:
Auth::user()->category_name
当你登录时,我会尝试Session::put("category_name","category 1"),但当我关闭窗口并在最后一个关闭的窗口之前打开它时,它会删除该变量。我想从用户登录到用户注销存储变量,但如果用户已经登录并关闭窗口,然后用户重新打开页面,则变量必须填写
您可以使用Eloquent Accessors
在用户模型中
public function setCategoryNameAttribute()
{
$categoryID = $this->category_id;
$category = Category::find($categoryID);
return $category->name;
}
您可以访问类似的类别名称
Auth::user()->category_name
尝试这个
在用户模型中添加以下功能
编辑尝试此
public function category_name()
{
return 'Cache::remember('category_' . $this->id , 60, function()
{
return $this->belongsTo('App'Category')->get();
});
}
现在每次你使用
Auth::user()->category_name
你的名字是
这将在您的View 中保存该名称
{{ Auth::user()->category_name }}
注意:此代码不是最好的解决方案,即使它对您有效,这是可以更改的,我只想让您明白,如果您想通过Auth::user()->getname
访问某些内容,您必须在用户模型中添加getname function
顺便问一下,你能给我们看看你在模型中设定的关系吗?因为这会让更容易
范例如果你的型号(hasone)中有这样的东西
public function category() {
return $this->hasOne('category');
}
你可以做这个
Auth::user()->category->name