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

Метод whereJsonLength

Метод whereJsonLength применяется к запросу Eloquent или Query Builder и добавляет условие, проверяющее длину JSON-массива в указанном поле. Первым параметром передаётся имя колонки с JSON-данными, вторым - оператор сравнения, третьим - значение длины. Если оператор не указан, используется оператор равенства.

Данный метод особенно полезен при работе с полями типа json или jsonb, когда нужно найти записи с определённым количеством элементов в массиве. Например, можно выбрать все статьи с определённым количеством тегов или товары с заданным числом характеристик.

Синтаксис

<?php Model::whereJsonLength($column, $operator, $value); ?>

Пример с оператором равенства

Давайте отфильтруем статьи, у которых поле 'tags' является JSON-массивом ровно из 3 элементов:

<?php use AppModelsArticle; $articles = Article::whereJsonLength('tags', 3)->get(); foreach ($articles as $article) { echo $article->title; } ?>

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

"Article 1" "Article 4" "Article 7"

Пример с оператором больше

Давайте выберем товары, у которых количество характеристик в JSON-поле 'attributes' больше 5:

<?php use AppModelsProduct; $products = Product::whereJsonLength('attributes', '>', 5)->get(); foreach ($products as $product) { echo $product->name; } ?>

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

"Product 2" "Product 5"

Пример с оператором между

Давайте найдём пользователей, у которых количество записей в JSON-поле 'posts' находится в диапазоне от 2 до 5 включительно:

<?php use AppModelsUser; $users = User::whereJsonLength('posts', '>=', 2) ->whereJsonLength('posts', '<=', 5) ->get(); foreach ($users as $user) { echo $user->name; } ?>

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

"User 3" "User 6"

Пример с оператором неравенства

Давайте отфильтруем посты, у которых количество комментариев в JSON-поле 'comments' не равно 0:

<?php use AppModelsPost; $posts = Post::whereJsonLength('comments', '!=', 0)->get(); foreach ($posts as $post) { echo $post->title; } ?>

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

"Post 1" "Post 3"

Пример с нулевой длиной массива

Давайте найдём все записи, у которых JSON-поле 'items' является пустым массивом:

<?php use AppModelsOrder; $orders = Order::whereJsonLength('items', 0)->get(); foreach ($orders as $order) { echo $order->id; } ?>

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

"5" "8" "12"

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

  • метод whereJsonContains,
    который проверяет наличие значения в JSON-массиве
  • метод where,
    который добавляет базовое условие фильтрации
  • метод orWhere,
    который добавляет условие через ИЛИ
  • метод get,
    который выполняет запрос и возвращает коллекцию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить