2017-03-09 17 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' 
    ] 
]); 

とAdmin \ UsersController.phpで

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

*タイプヒント*とはどういう意味ですか? – JSelser

+0

私の場合、UsersControllerの 'show()'メソッドはuser-idを取得します。 'public function show(User $ user)'を書くと、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

関連する問題