В Laravel 8 вы можете использовать функцию проверки, чтобы убедиться, что данные, введенные пользователями, соответствуют определенным критериям. Одним из распространенных требований является проверка уникальности значений в двух столбцах таблицы базы данных. В этой статье мы рассмотрим различные методы достижения этой цели в Laravel 8, а также приведем примеры кода.
Метод 1: использование правила уникальности с замыканием
Вы можете использовать правило проверки uniqueи предоставить замыкание, чтобы указать столбцы, которые должны быть уникальными.
use Illuminate\Validation\Rule;
public function rules()
{
return [
'column1' => [
'required',
Rule::unique('table')->where(function ($query) {
return $query->where('column2', $this->column2);
}),
],
];
}
Метод 2: использование правила уникальности с дополнительными условиями
Вы также можете использовать правило проверки uniqueвместе с дополнительными условиями, чтобы указать уникальность двух столбцов.
use Illuminate\Validation\Rule;
public function rules()
{
return [
'column1' => [
'required',
Rule::unique('table')->where(function ($query) {
return $query->where('column2', $this->column2)
->where('column3', $this->column3);
}),
],
];
}
Метод 3. Пользовательское правило проверки.
Другой подход — создать собственное правило проверки для проверки уникальности двух столбцов.
use Illuminate\Contracts\Validation\Rule;
public function rules()
{
return [
'column1' => [
'required',
new CustomUniqueRule('table', 'column2', 'column3'),
],
];
}
use Illuminate\Contracts\Validation\Rule;
use Illuminate\Support\Facades\DB;
class CustomUniqueRule implements Rule
{
protected $table;
protected $column2;
protected $column3;
public function __construct($table, $column2, $column3)
{
$this->table = $table;
$this->column2 = $column2;
$this->column3 = $column3;
}
public function passes($attribute, $value)
{
$count = DB::table($this->table)
->where($attribute, $value)
->where($this->column2, $this->column3)
->count();
return $count === 0;
}
public function message()
{
return 'The :attribute has already been taken.';
}
}
В Laravel 8 обеспечить уникальность значений в двух столбцах можно с помощью различных методов. Вы можете использовать встроенное правило uniqueс замыканиями или дополнительными условиями или создать собственное правило проверки. Следуя этим подходам, вы можете эффективно проверять и обеспечивать уникальные значения для нескольких столбцов в ваших приложениях Laravel 8.
Не забудьте настроить имена таблиц и столбцов в соответствии с вашим конкретным вариантом использования при реализации этих методов.
Реализуя эти методы, вы можете обеспечить уникальность значений в двух столбцах в Laravel 8, предоставляя надежный механизм проверки данных для ваших приложений.