0

我的用户模型有 3 个字段:用户名、密码和 category_id,所以当我进行身份验证时,auth 对象将具有所有 3 个变量,但我想添加其他模型上的类别名称,我得到:

$category = Category::find(Auth::user()->category_id);
$category_name = $category->name;

所以问题是我可以向谁添加 $category_name 到 Auth::user() 对象,以便在每次他像这样记录时检索它:

Auth::user()->category_name

我在登录时尝试 Session::put("category_name","Category 1") ,但是当我关闭窗口并通过最后关闭的窗口打开它时,它会删除该变量。我想存储自从人登录以来的变量,直到人注销,但如果人已经登录并关闭窗口,然后人重新打开页面,则必须填写变量

4

2 回答 2

0

你可以使用 Eloquent 访问器

在用户模型中

 public function setCategoryNameAttribute()
 {
    $categoryID = $this->category_id;
    $category = Category::find($categoryID);
    return $category->name;
 }

您可以访问类别名称,例如

Auth::user()->category_name
于 2016-05-10T05:15:05.387 回答
0

尝试这个

在您的用户模型中添加以下功能

编辑试试这个

public function category_name()
{
    return \Cache::remember('category_' . $this->id , 60, function()
    {
        return $this->belongsTo('App\Category')->get();
    });
}

现在每次你使用

Auth::user()->category_name

你会有名字

这将生态您视图中的名称

{{ Auth::user()->category_name }}

注意: 即使对您有用,此代码也不是最佳解决方案,这是可以更改的,我只想让您明白,如果您想通过访问某些内容,Auth::user()->getname则必须getname function在 User 模型中添加

顺便说一句,你能告诉我们你在模型中设置的关系吗?因为那会让事情变得更容易

如果你的模型中有这样的例子(hasone)

public function category() {
        return $this->hasOne('category');
    }

你可以这样做

Auth::user()->category->name
于 2016-05-10T01:38:22.403 回答