在雄辩的模型范围中检索请求实例

时间:2015-02-08 15:45:29

标签: php laravel eloquent laravel-5

我有一个Session表,我通过在REST API中进行身份验证来为用户创建会话。

会话与用户有关系,因此我可以从会话中检索用户对象。

我想创建一个Eloquent范围来检索登录的currentUser,如Session::currentUser()->id,其中Authorization标头等于Session表中的标记。

我似乎无法在scopeCurrentUser()中使用请求实例。不能通过控制器注入它,如下所示:

public function __construct(Request $request) {
    $this->request = $request;
}

还尝试将其注入方法(从Laravel 5开始就可以)

public function scopeCurrentUser($query, Request $request)
{
    return $query->where('token', $request->header('Authorization'));
}

任何方式我都可以获得$request->header('Authorization')

1 个答案:

答案 0 :(得分:1)

您可以使用app('Illuminate\Http\Request')Request::来获取请求实例(请确保您的文件顶部有use Request;)。

所以要么你有

use Request;

public function scopeCurrentUser($query)
{
    return $query->where('token', Request::header('Authorization'));
}

public function scopeCurrentUser($query)
{
    return $query->where('token', app('Illuminate\Http\Request')->header('Authorization'));
}

据我所知,你不能在Eloquent方法中进行依赖注入(至少在我尝试时它不起作用)。