Laravel在Request中检索绑定模型

Phi*_*oss 28 php laravel laravel-5

有没有简单的方法来检索请求中的路由绑定模型?

我想更新模型,但在此之前,我想使用Requests authorize()方法执行一些权限检查.但我只希望模型的所有者能够更新它.

在控制器中,我只是做这样的事情:

public function update(Request $request, Booking $booking)
{
    if($booking->owner->user_id === Auth::user()->user_id)
    {
       // Continue to update
    }
}
Run Code Online (Sandbox Code Playgroud)

但我希望在请求中执行此操作,而不是在控制器内执行此操作.如果我做:

dd(Illuminate\Http\Request::all());
Run Code Online (Sandbox Code Playgroud)

它只给我标量形式属性(如_method等等,但不是模型).

如果我将模型绑定到路径,如何从请求中检索该模型?

提前谢谢了.

Mar*_*ean 49

绝对!这是我甚至使用自己的方法.

您可以在请求中获取当前路由,然后获取任何参数,如下所示:

class UpdateRequest extends Request
{
    public function authorize()
    {
        $booking = $this->route('booking');

        return $booking->owner->user_id == $this->user()->getKey();
    }
}
Run Code Online (Sandbox Code Playgroud)

smartman(现已删除)的答案不同,如果您已经通过路径模型绑定检索了模型,则不会产生另一个查找查询.