Laravel范围在发布会上活跃

时间:2019-01-15 21:23:42

标签: php laravel

我在模型发布上有范围

public function scopeActive($query) {
    return $query->where('active', true);
}

在PostController上,我有方法show:

public function show(Post $post) {
   //
}

我如何才能将范围附加到show方法上,并对不活动的帖子进行abort(404)?我需要在全球范围内这样做。如果添加全局作用域,则如果帖子未处于活动状态,则用户将无法编辑其帖子。

1 个答案:

答案 0 :(得分:1)

您可以通过将解析逻辑放在RouteServiceProvider的boot方法中来自定义解析逻辑:

Route::bind('post', function ($id) {
    return App\Post::active()->find($id) ?? abort(404);
});