Laravel Eloquent — это мощный инструмент ORM (объектно-реляционное сопоставление), который упрощает взаимодействие с базой данных в приложениях Laravel. Одной из его выдающихся особенностей является возможность легко работать со столбцами JSON. В этой статье блога мы рассмотрим различные методы и приемы выполнения поиска по столбцам JSON с помощью Laravel Eloquent. Мы предоставим примеры кода и объясним каждый метод в разговорной форме, чтобы вам было легче его понять и реализовать в своих проектах.
Метод 1: методwhereJsonContains()
МетодwhereJsonContains() позволяет искать определенное значение в столбце JSON. Он принимает два параметра: имя столбца и значение для поиска. Например:
$users = User::whereJsonContains('meta->skills', 'programming')->get();
Этот фрагмент кода извлекает всех пользователей, чей столбец «мета» содержит объект JSON с ключом «навыки», имеющим значение «программирование».
Метод 2: методwhereJsonLength()
Если вам нужно искать объекты JSON по их длине, вы можете использовать методwhereJsonLength(). Он принимает два параметра: имя столбца и ожидаемую длину. Вот пример:
$products = Product::whereJsonLength('attributes->colors', 3)->get();
Этот фрагмент кода извлекает все продукты, столбец «атрибуты» которых содержит объект JSON с ключом «цвета» длиной 3.
Метод 3: методwhereJsonDoesntContain()
Для поиска столбцов JSON, которые не содержат определенного значения, вы можете использовать методwhereJsonDoesntContain(). Он принимает те же параметры, что и методwhereJsonContains(). Вот пример:
$users = User::whereJsonDoesntContain('meta->skills', 'programming')->get();
Этот фрагмент кода извлекает всех пользователей, чей столбец «мета» не содержит объект JSON с ключом «навыки», имеющим значение «программирование».
Метод 4: методыwhereJsonLengthGreaterThan() иwhereJsonLengthLessThan()
Если вы хотите искать объекты JSON на основе того, что их длина больше или меньше определенного значения, вы можете использовать методыwhereJsonLengthGreaterThan() иwhereJsonLengthLessThan( ) методы. Вот несколько примеров:
$products = Product::whereJsonLengthGreaterThan('attributes->prices', 100)->get();
$products = Product::whereJsonLengthLessThan('attributes->sizes', 10)->get();
Эти фрагменты кода извлекают продукты, столбец «атрибуты» которых содержит объект JSON с ключом «цены» длиной более 100 и ключом «размеры» длиной менее 10 соответственно.
Метод 5: методwhereJsonContainsStrict()
МетодwhereJsonContainsStrict() аналогичен методуwhereJsonContains(), но он выполняет строгое сравнение при сопоставлении значений. Это означает, что типы данных также должны совпадать. Вот пример:
$users = User::whereJsonContainsStrict('meta->age', 25)->get();
Этот фрагмент кода извлекает пользователей, чей столбец «мета» содержит объект JSON с ключом «возраст», имеющим точное значение 25.
В этой статье мы рассмотрели несколько методов, предоставляемых Laravel Eloquent для поиска по столбцам JSON. Мы рассмотрели методыwhereJsonContains(),whereJsonLength(),whereJsonDoesntContain(),whereJsonLengthGreaterThan(),whereJsonLengthLessThan() иwhereJsonContainsStrict(). Каждый метод предлагает уникальный способ поиска и фильтрации данных в столбцах JSON, обеспечивая гибкость и простоту использования. Используя эти методы, вы можете эффективно работать с данными JSON в своих приложениях Laravel. Приятного кодирования!