Уникальная проверка двух столбцов в валидации Laravel: подробное руководство

Laravel, будучи популярной платформой PHP, предоставляет мощные функции проверки «из коробки». Когда дело доходит до проверки уникальности данных, Laravel предлагает удобное «уникальное» правило проверки. Однако по умолчанию это правило позволяет проверять уникальность только одного столбца. Но что, если вам нужно проверить уникальность двух столбцов? В этой статье блога мы рассмотрим различные методы реализации этой уникальной проверки двух столбцов при проверке Laravel.

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

Laravel предоставляет класс Rule, который позволяет нам определять собственные правила проверки. В этом методе мы можем использовать класс «Правило» для создания собственного правила проверки специально для проверки уникальности двух столбцов.

Во-первых, давайте создадим собственный класс правил, используя следующую команду:

php artisan make:rule UniqueColumns

Это создаст новый файл с именем «UniqueColumns.php» внутри каталога «Rules». Откройте файл и обновите метод «passes» следующим образом:

public function passes($attribute, $value)
{
    [$column1, $column2] = explode(',', $value);
    return !DB::table('table_name')
        ->where($column1, $this->parameters[0])
        ->where($column2, $this->parameters[1])
        ->exists();
}

Теперь вы можете использовать это специальное правило в своей логике проверки:

use App\Rules\UniqueColumns;
$request->validate([
    'column1' => ['required', new UniqueColumns('table_name', 'column1', 'column2')],
    // Other validation rules...
]);

Метод 2: использование «уникального» модификатора правила

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

$request->validate([
    'column1' => 'required|unique:table_name,column1,NULL,id,column2,' . $request->input('column2'),
    // Other validation rules...
]);

В приведенном выше коде мы используем правило «уникальность» с модификатором. Модификатор имеет формат: «столбец2, значение_столбца2». Указав второй столбец и его значение, Laravel выполнит уникальную проверку для обоих столбцов.

Метод 3: использование пользовательского расширения правила проверки

Другой подход — расширить систему проверки Laravel, создав собственное правило проверки. Давайте определим собственное правило проверки под названием «unique_columns», выполнив следующую команду:

php artisan make:rule UniqueColumnsRule

Откройте сгенерированный файл «UniqueColumnsRule.php» и обновите метод «passes»:

public function passes($attribute, $value)
{
    [$column1, $column2] = explode(',', $value);
    return !DB::table('table_name')
        ->where($column1, $this->parameters[0])
        ->where($column2, $this->parameters[1])
        ->exists();
}

Теперь вы можете использовать это специальное правило в своей логике проверки:

use App\Rules\UniqueColumnsRule;
$request->validate([
    'column1' => ['required', new UniqueColumnsRule('table_name', 'column1', 'column2')],
    // Other validation rules...
]);

В этой статье мы рассмотрели три различных метода проверки уникальности двух столбцов при проверке Laravel. Используя класс «Rule», модификатор правила «unique» или создав собственное правило проверки, вы можете легко проверить уникальность данных в нескольких столбцах в ваших приложениях Laravel. Улучшите свою логику проверки с помощью этих методов и обеспечьте целостность своих данных.