【问题标题】:Laravel 5 Route Model Binding is not workingLaravel 5 路由模型绑定不起作用
【发布时间】: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>

但是当我尝试restoredelete 时,我遇到了NotFoundHttpException 的问题

【问题讨论】:

  • 我假设您的数据库中确实存在 ID 为 16 的类别?
  • 是的,数据库中有数据。 prntscr.com/69lcsf
  • 相关行已被删除。据我所知,您不能使用标准模型绑定来获取已删除的行。如果你想这样做,你必须使用 $router-&gt;bind('App\Category', function($category) {}) 而不是闭包使用 Eloquent 的 withTrashed 方法。我想以上假设您的模型使用 SoftDeletes 并且列 deleted_at 实际上正在使用中。
  • 感谢@BenSwinburne,它成功了。这是因为软删除。 $router->bind('categories', function($id) { return Category::withTrashed()->find($id); });
  • 我创建了一个答案,以便您可以将问题标记为已回答,它会从未回答的问题列表中消失。

标签: php laravel-5


【解决方案1】:

您的 cmets 中的屏幕截图表明您正在使用 SoftDeletes

以下模型绑定代码不考虑已删除的行。

$router->model('categories', 'App\Category');

为了实现这一点,您需要使用 bind 而不是 model

$router->bind('categories', function($value)
{
    return App\Category::withTrashed()->where('id', $value)->first();
}

其中将包括已删除的行。例如,您需要将其用于您的恢复路线。

【讨论】:

    猜你喜欢
    • 2015-04-24
    • 1970-01-01
    • 2018-05-26
    • 2015-07-12
    • 2018-02-28
    • 2020-10-03
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    相关资源
    最近更新 更多