38
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Laravel】 バリデーション - unique ルール(論理削除-SoftDeletes 対応)

Last updated at Posted at 2017-10-20

概要

Laravelで論理削除(SoftDeletes)を設定している場合、
バリデーションで理論削除したデータも引っかかる。。。

条件を追加(削除したデータを除外)したい!を実現するにあたり
ハマったのでメモとして残しています。

サンプル

Laravel
'email' => 'required|unique:member,email,40,id,deleted_at,NULL',

SQL
SELECT email 
FROM member
WHERE id != '40'
AND deleted_at = 'NULL'

 必須(required)は無視しています

uniqueのパラメータ内容

パラメータ 内容 必須 補足
第1 テーブル 必須
第2 カラム 必須
第3 除外データ 除外したいデータがある場合は、必須
(データを編集の時など)
デフォルトはIDのデータを記述する。
※現時点では、理論削除に対応されていない
第4 除外カラム名
(デフォルトはID)
下記の場合、必須

・「除外データ(第3)」が「'テーブル(第1)'.’id’」以外

・追加条件(第5を追加する)
第5 追加条件の
カラム(1)
下記のる場合、必須

・理論削除に対応
・条件を追加する
'deleted_at'を追加

または、
条件追加のカラム名
第6 追加条件の
内容(1)
'NULL'を追加

または、
条件追加の内容
第7 追加条件の
カラム名(2)
第8 追加条件の
内容(2)

バリデーション 5.1 Laravel
https://readouble.com/laravel/5.1/ja/validation.html

38
36
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?