您在问题中概述的内容似乎可以解决它。
一个细微的改进是您可能希望指定哪个特定键包含已删除的模型。
例如,有正常的路由模型绑定,如下所示:
Route::model('job', 'Job');
并定义另一个键,例如“anyjob”,您还可以在其中查询已删除的作业:
Route::bind('anyjob', function($id) {
return Job::withTrashed()->find($id);
});
然后对于您不想包含已删除作业的路线,您只需参考job
:
get('/jobs/{job}/edit', ['controller' => 'JobsController@edit']); // We don't want to be able to edit a trashed job.
并且仅参考anyjob
可以接受已丢弃作业的路由的绑定:
delete('/jobs/{anyjob}', ['controller' => 'JobsController@destroy']); // we could then forceDelete the trashed job for example as it'll be correctly injected in out our controller method
这可以防止您最终在控制器方法中使用软删除模型,否则这些模型不应该处理它们。您指定可以接受任何工作,甚至只是丢弃工作的确切路线。