Хранить переменные в пользовательской модели 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
Другие вопросы по тегам