【问题标题】:Laravel: Soft Deleted Models and Type HintingLaravel:软删除模型和类型提示
【发布时间】:2017-07-29 18:54:41
【问题描述】:

我使用Laravel Soft Deleting 和类型提示。

是否可以使用类型提示向具有适当权限的用户显示软删除的模型。开箱即用的软删除模型无法输入提示(laravel 抛出错误)。

示例代码 - 路线:

Route::resource('users', 'Admin\UsersController', [
    'parameters' => ['id' => 'user'],
    'names' => [
        'index' => 'admin.users.index',
        'create' => 'admin.users.create',
        'store' => 'admin.users.store',
        'show' => 'admin.users.show',
        'edit' => 'admin.users.edit',
        'update' => 'admin.users.update',
        'destroy' => 'admin.users.destroy'
    ]
]);

在 Admin\UsersController.php 中

public function show(User $user)
{        
    // Show the $user (also if soft deleted)
}

【问题讨论】:

  • 提示类型是什么意思?
  • 在我的例子中,UsersController 的show() 方法获得了一个用户ID。当我写 public function show(User $user) 时,laravel 试图找到具有给定用户 ID 的用户。为了获取模型,无需再做任何事情(至少在它未被软删除时)。

标签: laravel laravel-5 eloquent type-hinting


【解决方案1】:

查看Explicit Route Model Binding 中的“自定义解析逻辑”部分。

你会想在app/Providers/RouteServiceProvider.php做这样的事情:

public function boot()
{
    parent::boot();

    Route::bind('user', function ($value) {
        return App\User::withTrashed()->find($value);
    });
}

【讨论】:

  • 小错字:witTrashed() 应该是withTrashed()
猜你喜欢
  • 2017-01-04
  • 2013-10-27
  • 2021-10-02
  • 1970-01-01
  • 2020-06-30
  • 2018-06-19
  • 2018-04-15
  • 1970-01-01
  • 2021-06-21
相关资源
最近更新 更多