質問するログイン新規登録

回答編集履歴

2

参考URLの追加

2017/06/14 07:37

投稿

watanuki_p
watanuki_p

スコア45

answer CHANGED
@@ -39,4 +39,4 @@
39
39
  }
40
40
  ```
41
41
 
42
- vender以下のコードなのでおそらくgit管理外ですが、こうすれば特定の注入にソフトデリートされたデータを含めることができます。
42
+ vender以下のコードなのでおそらくgit管理外ですが、こうすれば特定の注入にソフトデリートされたデータを含めることができます。 参考: [Rewrite Vendor Class](https://laracasts.com/discuss/channels/general-discussion/rewrite-vendor-class)

1

追記です

2017/06/14 07:37

投稿

watanuki_p
watanuki_p

スコア45

answer CHANGED
@@ -14,4 +14,29 @@
14
14
 
15
15
  削除済み専用のルーティングを作る形になります。
16
16
  こうしておけば削除済みのページを見れるユーザーをミドルウェアで制限したりするのも簡単です。
17
- 基本的にソフトデリートは `削除` です。削除されてないデータとは明確に処理を分けたほうが良いように思いますし、頻繁にこのようなコードを書く必要が有る場合はソフトデリートではなく、staffにステータスを持たせて管理方法を変えたほうがいいかもしれません。
17
+ 基本的にソフトデリートは `削除` です。削除されてないデータとは明確に処理を分けたほうが良いように思いますし、頻繁にこのようなコードを書く必要が有る場合はソフトデリートではなく、staffにステータスを持たせて管理方法を変えたほうがいいかもしれません。
18
+
19
+ ## 追記
20
+
21
+ どうしても注入したいのであれば、 `ImplicitRouteBinding.php` の `resolveForRoute` メソッドを改造します。
22
+
23
+ ```php
24
+ public static function resolveForRoute($container, $route)
25
+ {
26
+ // ...略
27
+
28
+ // ホワイトリスト (実際ではハードコーディングは避けたほうが吉)
29
+ if ($route->action['controller'] == 'App\Http\Controllers\StaffController@show') {
30
+ $route->setParameter($parameterName, $model->where(
31
+ $model->getRouteKeyName(), $parameterValue
32
+ )->withTrashed()->firstOrFail());
33
+ } else {
34
+ $route->setParameter($parameterName, $model->where(
35
+ $model->getRouteKeyName(), $parameterValue
36
+ )->firstOrFail());
37
+ }
38
+ }
39
+ }
40
+ ```
41
+
42
+ vender以下のコードなのでおそらくgit管理外ですが、こうすれば特定の注入にソフトデリートされたデータを含めることができます。