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

Метод findOr

Метод findOr применяется к запросу Eloquent или Query Builder. Первым параметром передаётся идентификатор записи, вторым - замыкание, которое выполняется в случае, если запись не найдена. Замыкание должно возвращать значение, которое будет использовано в качестве результата метода. Если замыкание не передано, метод возвращает null.

Синтаксис

<?php Model::findOr($id, $callback); ?>

Пример

Давайте найдём пользователя с id равным 1. Если пользователь не найден, вернём нового пользователя:

<?php namespace AppHttpControllers; use AppModelsUser; class UserController extends Controller { public function show() { $user = User::findOr(1, function () { return new User([ 'name' => 'Guest', 'email' => 'guest@example.com' ]); }); echo $user->name; } } ?>

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

"Guest"

Пример

Применим метод к построителю запросов для поиска статьи, у которой id равен 10. Если статья не найдена, создадим новую с минимальными данными:

<?php namespace AppHttpControllers; use AppModelsArticle; class ArticleController extends Controller { public function index() { $article = Article::findOr(10, function () { $newArticle = new Article(); $newArticle->title = 'Default Article'; $newArticle->content = 'Empty content'; $newArticle->save(); return $newArticle; }); echo $article->id . ': ' . $article->title; } } ?>

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

"11: Default Article"

Пример

Используем метод без замыкания, чтобы просто получить null при отсутствии записи:

<?php namespace AppHttpControllers; use AppModelsCategory; class CategoryController extends Controller { public function show() { $category = Category::findOr(99); if ($category === null) { echo 'Category not found'; } else { echo $category->name; } } } ?>

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

"Category not found"

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

  • метод find,
    который ищет запись по идентификатору и возвращает null при отсутствии
  • метод findOrFail,
    который выбрасывает исключение при отсутствии записи
  • метод firstOrNew,
    который создаёт новый экземпляр модели при отсутствии результата
  • метод firstOrCreate,
    который создаёт и сохраняет модель при отсутствии результата
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить