2017-03-09 70 views
0

我使用Laravel Soft Deleting和类型暗示。Laravel:软删除模型和类型暗示

是否可以使用类型提示向具有适当权限的用户显示软删除的模型。开箱即用软删除的模型不能被键入暗示(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' 
    ] 
]); 

而且在管理\ UsersController.php

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

你是什么意思* type hinted *? – JSelser

+0

在我的情况下,UsersController的show()方法获取用户标识。当我写'公共功能显示(用户$用户)'laravel试图找到具有给定用户ID的用户。为了获得模型,至少在没有软删除的情况下不需要做更多的事情。 – sugo

回答

1

中只看Explicit Route Model Binding “定制解析逻辑”。你需要在app/Providers/RouteServiceProvider.php这样做:

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

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

哇,很好,工作正常:) – sugo

+0

小错字:'witTrashed()'应该'withTrashed()' – mauricehofman