РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
574 of 1392 menu

Правило unique

Правило unique используется для проверки уникальности значения поля в таблице базы данных. Оно гарантирует, что введённое пользователем значение не дублируется с существующими записями. Первым параметром передаётся имя таблицы, вторым - имя столбца. Если столбец не указан, используется имя проверяемого поля.

Синтаксис

<?php 'field' => 'unique:table,column' ?>

Где:

  • field - имя поля формы;
  • table - имя таблицы в базе данных;
  • column - имя столбца (опционально).

Пример

Проверим, что введённый email не существует в таблице users:

<?php namespace AppHttpControllers; use IlluminateHttpRequest; class UserController extends Controller { public function store(Request $request) { $validated = $request->validate([ 'email' => 'required|unique:users', ]); return response()->json(['message' => 'User created']); } } ?>

Если пользователь введёт email 'user@example.com', который уже существует, валидация не пройдёт.

Пример

Проверим уникальность имени пользователя в столбце username таблицы users:

<?php namespace AppHttpControllers; use IlluminateHttpRequest; class ProfileController extends Controller { public function update(Request $request) { $validated = $request->validate([ 'username' => 'required|unique:users,username', ]); return redirect()->back()->with('success', 'Profile updated'); } } ?>

Результат выполнения кода при успешной валидации:

"Profile updated"

Игнорирование текущей записи

При обновлении данных часто нужно игнорировать текущую запись, чтобы валидация не срабатывала на собственное значение. Для этого используется дополнительный параметр:

<?php namespace AppHttpControllers; use IlluminateHttpRequest; class UserController extends Controller { public function update(Request $request, $id) { $validated = $request->validate([ 'email' => 'required|unique:users,email,' . $id, ]); return response()->json(['message' => 'User updated']); } } ?>

Пример

Используем правило с дополнительными условиями через метод Rule::unique:

<?php namespace AppHttpControllers; use IlluminateHttpRequest; use IlluminateValidationRule; class UserController extends Controller { public function store(Request $request) { $validated = $request->validate([ 'email' => [ 'required', Rule::unique('users')->where(function ($query) { return $query->where('active', true); }), ], ]); return response()->json(['message' => 'User created']); } } ?>

В этом примере уникальность проверяется только среди активных пользователей.

Смотрите также

  • правило required,
    которое проверяет наличие значения
  • правило email,
    которое проверяет корректность email-адреса
  • правило exists,
    которое проверяет существование значения в таблице
  • метод Rule::unique,
    который предоставляет расширенный синтаксис проверки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить