Правило distinct
Правило distinct применяется для валидации массивов и проверяет,
что все значения элементов внутри массива уникальны.
Обычно используется при валидации полей типа array или
при работе с вложенными массивами в формах.
Правило не принимает дополнительных параметров и работает
со строгим сравнением значений (===).
Синтаксис
Правило указывается в массиве правил валидации для поля типа array:
<?php
$rules = [
'items' => ['required', 'array', 'distinct'],
];
?>
Пример
Базовое использование правила для проверки списка значений:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ItemController extends Controller
{
public function store(Request $request)
{
$validated = $request->validate([
'items' => ['required', 'array', 'distinct'],
]);
echo "Validation passed!";
}
}
?>
Результат выполнения кода при отправке данных:
"Validation passed!"
Пример
Валидация массива с вложенными полями с использованием точечной нотации:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class OrderController extends Controller
{
public function store(Request $request)
{
$validated = $request->validate([
'products.*.id' => ['required', 'integer', 'distinct'],
'products.*.name' => ['required', 'string'],
]);
echo "All products have unique IDs!";
}
}
?>
Результат выполнения кода при успешной валидации:
"All products have unique IDs!"
Пример
Использование правила совместно с кастомными сообщениями об ошибках:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class TagController extends Controller
{
public function store(Request $request)
{
$validated = $request->validate([
'tags' => ['required', 'array', 'distinct'],
], [
'tags.distinct' => 'Tag list contains duplicate values.',
]);
echo "Tags are valid!";
}
}
?>
Результат выполнения кода при отправке данных с дубликатами:
"Tag list contains duplicate values."
Смотрите также
-
правило
array,
которое проверяет, что поле является массивом -
правило
in,
которое проверяет наличие значения в списке -
правило
unique,
которое проверяет уникальность значения в базе данных -
класс
FormRequest,
для создания классов валидации