概要
- existsバリデーションで論理削除されている場合バリデーションエラーにする方法をまとめる。
困りごと
- laravelのバリデーションルールにexistsという物がある。リクエストで送られた値がテーブルに存在するかをチェックできる。
- idなどがpostされたときに使うバリデーションルールとして一般的だが、
exists:テーブル名,カラム名
としただけだと論理削除レコードを考慮してくれない。(論理削除されていたとしてもレコードが存在していたらバリデーションで弾かない。)
方法
-
下記のようにテーブル名、カラム名に追加してdeleted_atとnullを追加する。
return [ 'id' => ['exists:テーブル名,カラム名,deleted_at,null'], ]