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

Правило exists

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

Синтаксис

Правило может быть записано несколькими способами:

<?php // Строковый формат $rules = [ 'user_id' => 'exists:users,id' ]; // Массивный формат $rules = [ 'user_id' => ['exists:users,id'] ]; // С использованием Rule::exists use Illuminate\Validation\Rule; $rules = [ 'user_id' => Rule::exists('users', 'id') ]; ?>

Правило принимает два основных параметра: первый - имя таблицы, второй - имя колонки. Если второй параметр не указан, используется имя поля.

Пример

Проверим, что идентификатор пользователя существует в таблице users:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller { public function update(Request $request) { $validated = $request->validate([ 'user_id' => 'required|exists:users,id' ]); // Дальнейшая логика echo "User ID: " . $validated['user_id']; } } ?>

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

"User ID: 5"

Результат при ошибке валидации:

"Validation error: The selected user id is invalid."

Пример

Проверим существование категории в таблице categories с указанием конкретной колонки:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Validation\Rule; class ArticleController extends Controller { public function store(Request $request) { $validated = $request->validate([ 'title' => 'required|string|max:255', 'category_slug' => [ 'required', 'string', Rule::exists('categories', 'slug') ] ]); echo "Article created with category: " . $validated['category_slug']; } } ?>

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

"Article created with category: programming"

Пример

Использование дополнительных условий в правиле exists:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Validation\Rule; class OrderController extends Controller { public function create(Request $request) { $validated = $request->validate([ 'product_id' => [ 'required', 'integer', Rule::exists('products', 'id') ->where(function ($query) { $query->where('is_active', true); }) ] ]); echo "Product ID: " . $validated['product_id']; } } ?>

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

"Product ID: 12"

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

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