将变量存储在用户模型laravel 4上


store variables on user model laravel 4

我的用户模型有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