Обеспечьте уникальный заголовок в Laravel, кроме идентификатора при редактировании

Метод 1: использование правила проверки unique

use Illuminate\Validation\Rule;
$request->validate([
    'title' => [
        'required',
        Rule::unique('your_table')->ignore($id),
    ],
]);

В этом методе вы можете использовать правило проверки Rule::unique, чтобы указать имя таблицы (your_table) и идентификатор ($id), который вы хотите исключить из проверки уникальности.

Метод 2. Пользовательское правило проверки с использованием замыкания

use Illuminate\Support\Facades\Validator;
$validator = Validator::make($request->all(), [
    'title' => [
        'required',
        function ($attribute, $value, $fail) use ($id) {
            $exists = DB::table('your_table')
                ->where('title', $value)
                ->where('id', '!=', $id)
                ->exists();
            if ($exists) {
                $fail('The title has already been taken.');
            }
        },
    ],
]);
if ($validator->fails()) {
    // Handle validation errors
}

Этот метод позволяет вам определить собственное правило проверки с помощью замыкания. Внутри замыкания вы можете вручную проверить, существует ли заголовок в таблице (your_table), за исключением указанного идентификатора ($id).

Метод 3. Использование уникального правила с условиями запроса

use Illuminate\Validation\Rule;
$request->validate([
    'title' => [
        'required',
        Rule::unique('your_table')->where(function ($query) use ($id) {
            $query->where('id', '!=', $id);
        }),
    ],
]);

В этом методе вы можете использовать метод whereправила unique, чтобы указать дополнительные условия запроса. В этом случае мы проверяем наличие условия id != $id, чтобы исключить указанный идентификатор из проверки уникальности.

Это всего лишь несколько примеров того, как можно обеспечить уникальность заголовка в Laravel, исключив при этом идентификатор в процессе редактирования. Выберите метод, который соответствует вашим требованиям и стилю реализации.