如何在Laravel 4中更改Auth :: user()的值

时间:2014-07-30 15:26:16

标签: laravel-4

任何更改Auth::user()返回的用户实例的方法,我想要的是急切加载它的一些关系,所以我不必每次都输入它:

Auth::user();Auth::user()->with('company')->first();

每次我请求Auth::user()时,我都会返回Auth::user()->with('company')->first()

2 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是修改before过滤器(app/filters.php)。

App::before(function($request)
{
    if (Auth::check())
    {
        Auth::setUser(Auth::user()->with('company')->first());
    }
});

这样,您仍然可以在任何需要的地方使用Auth::user()

答案 1 :(得分:0)

我遵循的一个方法是在BaseController中设置Auth :: user(),它将在所有控制器中都可访问。如果您在视图中使用,您可以查看:: share()以使其在所有视图中可用。在这里,您可以急切地加载您的关系。

class BaseController extends Controller {

    protected $currentUser;

    public function __construct() {
        $this->currentUser = Auth::user(); // You can eager load here. This is will null if not logged in
    }

   protected function setupLayout()
   {
        if ( ! is_null($this->layout))
        {
             $this->layout = View::make($this->layout);
        } 

        View::share('currentUser', $this->currentUser);
  }