在Laravel 5中,如果使用资源控制器,模型会自动加载并进入方法 但是,我有一个查询范围检查我的模型是否处于活动状态。对于这个特定情况,我想删除该查询范围,但将其保留在类中的其他方法上。
我可以看到我可以覆盖模型中的resolveRouteBinding
。但是这会覆盖所有方法,而不仅仅是一种方法。
感谢。
答案 0 :(得分:0)
我不知道有什么好方法可以做到这一点,但这是一个应该有用的解决方案。
您可以使用2个资源路由组:
Route::resource('photos', 'PhotoController', [
'parameters' => [
'photo' => 'photo_no_scope',
],
'only' => ['edit', 'update'],
]);
Route::resource('photos', 'PhotoController', [
'except' => ['edit', 'update'],
]);
然后你必须指示Laravel photo_no_scope
的含义。这样做的最佳位置是RouteServiceProvider
:
class RouteServiceProvider extends ServiceProvider {
public function boot() {
parent::boot();
// Include archived photos
Route::bind('photo_no_scope', function ($id) {
return Photo::withoutGlobalScopes()->findOrFail($id);
});
}
}
Haven未经过测试,但您可能还需要更新控制器以查找$photo_no_scope
参数,而不是$photo
答案 1 :(得分:0)
最后,我发现最简洁的方法是在我想删除全局范围时使用普通路由而不是资源路由。