【发布时间】:2015-02-25 20:29:56
【问题描述】:
我正在尝试使用路由模型绑定,但遇到了问题。
RouteServiceProvider.php
public function boot(Router $router)
{
parent::boot($router);
$router->model('categories', 'App\Category');
}
Route.php
Route::get('categories/trash', ['as' => 'admin.categories.trash', 'uses' => 'CategoriesController@trash']);
Route::get('categories/{categories}/restore', ['as' => 'admin.categories.restore', 'uses' => 'CategoriesController@restore']);
Route::get('categories/{categories}/delete', ['as' => 'admin.categories.delete', 'uses' => 'CategoriesController@delete']);
Route::resource('categories', 'CategoriesController');
CategoriesController.php
public function restore(Category $category)
{
$category->restore();
return redirect()->back();
}
public function delete(Category $category)
{
$category->forceDelete();
return redirect()->back();
}
查看
<a href="{!! URL::route('admin.categories.restore', $category->id) !!}">Restore</a>
<a href="{!! URL::route('admin.categories.delete', $category->id) !!}">Delete Permanently</a>
但是当我尝试restore 或delete 时,我遇到了NotFoundHttpException 的问题
【问题讨论】:
-
我假设您的数据库中确实存在 ID 为 16 的类别?
-
是的,数据库中有数据。 prntscr.com/69lcsf
-
相关行已被删除。据我所知,您不能使用标准模型绑定来获取已删除的行。如果你想这样做,你必须使用
$router->bind('App\Category', function($category) {})而不是闭包使用 Eloquent 的withTrashed方法。我想以上假设您的模型使用SoftDeletes并且列deleted_at实际上正在使用中。 -
感谢@BenSwinburne,它成功了。这是因为软删除。 $router->bind('categories', function($id) { return Category::withTrashed()->find($id); });
-
我创建了一个答案,以便您可以将问题标记为已回答,它会从未回答的问题列表中消失。