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

Laravel 4 如何更改Laravel 4中Auth::user()的值,laravel-4,Laravel 4,任何更改由Auth::user()返回的用户实例的方法,我想要的是立即加载与它的一些关系,这样我就不必每次都键入它: 从 Auth::user() 到 Auth::user()->with('company')->first() 每次我请求Auth::user()我都会得到返回的Auth::user()->with('company')->first()。我遵循的一种方法是在BaseController中设置Auth::user(),并且它在所有控制器中都是可访问的。如果在视图中使用,则可以查看

任何更改由
Auth::user()
返回的用户实例的方法,我想要的是立即加载与它的一些关系,这样我就不必每次都键入它:

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


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

我遵循的一种方法是在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);
  }

一种方法是在过滤器(
app/filters.php
)之前编辑您的


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

Auth::user()->公司->任何东西有什么问题?急切加载的数据不会持续到当前请求结束后,那么您为什么需要它呢?我经常使用
Auth::user()->company()
,所以我尝试这个方法希望缓存它,这样我就不会每次请求时都访问数据库。您可以使用
->company
作为动态属性,所以它只执行一次(每次登录/请求),当然,您可以在
User
模型的关系定义中缓存查询。选择适合您的。有趣的是,我会这样尝试,谢谢。有时我在任何
控制器
之外使用
Auth::user()
,这可能对使用
视图
有帮助。
App::before(function($request)
{
    if (Auth::check())
    {
        Auth::setUser(Auth::user()->with('company')->first());
    }
});