在用户模型laravel 4

时间:2016-05-09 22:15:18

标签: php laravel session laravel-4 laravel-4.2

我的用户模型有3个字段:username,password和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","类别1和#34;)但是当我关闭窗口并在最后关闭的窗口打开它时,它会删除那个变量。 我希望存储变量,因为登录人员,直到人员注销,但如果此人已登录并关闭窗口,然后该人员重新打开页面,则必须填写变量

2 个答案:

答案 0 :(得分: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 }}

注意:这段代码不是最好的解决方案,即使它适合你,这是开放的更改,我只是想让你明白如果你想通过{{访问某些东西1}}您必须在用户模型中添加Auth::user()->getname

顺便告诉我们您在模型中设置的关系?因为那样会更容易

一个例子 如果你在你的模型中有这样的东西(hasone)

getname function

你可以这样做

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

答案 1 :(得分:0)

您可以使用Eloquent Accessors

在用户模型中

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

您可以访问类别名称,如

Auth::user()->category_name