Как сделать Validator unique при мягком удалении?

В 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.