В Laravel, чтобы сделать валидатор unique
при мягком удалении, вам понадобится использовать функцию whereNull
или where
в вашем правиле валидатора.
Предположим, у вас есть модель User
и вы хотите сделать уникальное правило для поля email
, но при мягком удалении, когда пользователь помечен как удаленный, должно быть разрешено использование того же email.
Для этого вам сначала нужно определить правило валидатора в методе rules
вашей формы или контроллера:
public function rules() { $userId = auth()->user()->id; // Пример получения id текущего пользователя return [ 'email' => [ 'required', 'email', Rule::unique('users')->where(function ($query) use ($userId) { $query->whereNull('deleted_at')->orWhere('id', $userId); }), ], // Другие правила для других полей ]; }
В этом примере мы используем Rule::unique
для создания правила валидатора unique
. Затем мы используем функцию where
или whereNull
, чтобы указать, что deleted_at
должен быть NULL
или id
должен быть равен текущему пользователю ($userId
).
Таким образом, если пользователь помечен как удаленный, то он может продолжать использовать свой текущий email без получения ошибки валидации. В противном случае, если email уже существует для активного пользователя, это приведет к ошибке валидации.
Надеюсь, это помогло объяснить, как сделать валидатор unique
при мягком удалении в Laravel.