@denis-chenykh

Как правильно фильтровать значения json с помощью whereJsonContains в laravel?

Подскажите, пожалуйста, как мне правильно пользоваться данной функции выбирая вложенные значения в колонке таблицы в json

У меня колонка json выглядит вот так
{
    "area": {
        "name": "Kvadratura",
        "slug": "area",
        "type": "string",
        "view": "string",
        "value": "54"
    },
    "rest": {
        "name": "Ostalo",
        "slug": "rest",
        "type": "select",
        "view": "checkbox",
        "value": "Terasa"
    },
}

Сама метод
Model::whereJsonContains('filters.rooms.value', 1)->get();

Сам запрос который генерирует данный метод выше
select * from `table` where (json_contains(`filters`, "1", '$."rooms"."value"'))

Проблема в том что он просто не выводит ничего, хотя точно запись с таким значением есть и далеко не одна, что через phpmyadmin запрос отправлять sql, что через laravel, выводит просто ничего.

Что в данном случаи я делаю нет?
  • Вопрос задан
  • 341 просмотр
Пригласить эксперта
Ответы на вопрос 1
gzhegow
@gzhegow
aka "ОбнимиБизнесмена"
Для безопасности твоей головушки сообщу - если оно выглядит "как-то сложновато", то лучше не надо, найди способ обойтись. Даже если ты сжав зубы добъешь фильтрацию по JSON-у в РЕЛЯЦИОННОЙ (созданной чтобы всё, что ищется было в РАЗНЫХ полях) - это потом кто-то не сможет прочитать, поредактировать и вообще исправить если захочет изменить.

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы