Хранить переменные в пользовательской модели laravel 4
Моя пользовательская модель имеет 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","Category 1") при входе в систему, но когда я закрываю окна и открываю его по последним закрытым окнам, он удаляет эту переменную. я хочу сохранить переменную, так как человек вошел в систему, пока человек не выйдет из системы, но если человек вошел в систему и закроет окно, а затем человек снова откроет страницу, переменная должна быть заполнена
2 ответа
Вы можете использовать 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
у тебя будет имя
это будет эко имя в вашем представлении
{{ Auth::user()->category_name }}
ПРИМЕЧАНИЕ: этот код не является лучшим решением, даже если он работает для вас, он открыт для изменений, я просто хочу, чтобы вы поняли, что если вы хотите получить доступ к чему-либо через Auth::user()->getname
Вы должны добавить getname function
в модели User
и, кстати, вы можете показать нам отношение, которое вы установили в вашей модели? потому что это облегчит
пример, если у вас есть что-то подобное в вашей модели (hasone)
public function category() {
return $this->hasOne('category');
}
вы можете сделать это
Auth::user()->category->name