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

Метод unless

Метод unless является противоположностью метода when и применяется к запросам Eloquent, коллекциям и в Blade-шаблонах. Он выполняет переданное замыкание только в том случае, если первое условие возвращает false. Если условие истинно, метод возвращает исходный объект без изменений. Первым параметром передаётся условие, вторым - замыкание, которое выполняется при ложном условии.

Синтаксис

<?php Model::unless($condition, function ($query) { // code }); ?>

Пример

Давайте применим дополнительную фильтрацию к запросу, если параметр 'filter' не передан:

<?php use AppModelsArticle; $filter = null; $articles = Article::unless($filter, function ($query) { return $query->where('status', 'published'); })->get(); foreach ($articles as $article) { echo $article->title; } ?>

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

["article 1", "article 2", "article 3"]

Пример

Давайте используем метод unless с коллекцией для условного применения операции:

<?php use IlluminateSupportCollection; $collection = collect([1, 2, 3, 4, 5]); $shouldFilter = false; $res = $collection->unless($shouldFilter, function ($items) { return $items->filter(function ($item) { return $item > 2; }); }); print_r($res->toArray()); ?>

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

[3, 4, 5]

Пример

Давайте используем метод unless в Blade-шаблоне для условного отображения контента:

@unless ($articles->isEmpty()) <ul> @foreach ($articles as $article) <li>{{ $article->title }}</li> @endforeach </ul> @endunless

Пример

Давайте передадим в метод unless замыкание в качестве условия для более сложной логики:

<?php use AppModelsArticle; use IlluminateSupportFacadesRequest; $userType = 'guest'; $articles = Article::unless(function () use ($userType) { return $userType === 'admin'; }, function ($query) { return $query->where('is_published', true); })->get(); foreach ($articles as $article) { echo $article->title . "\n"; } ?>

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

"article 1" "article 2"

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

  • метод when,
    который выполняет код при истинном условии
  • метод where,
    который фильтрует коллекцию по условию
  • метод filter,
    который фильтрует коллекцию через замыкание
  • метод reject,
    который удаляет элементы из коллекции по условию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить