как использовать фильтр в json array_data в laravel, postgresql - PullRequest
0 голосов
/ 29 мая 2020

У меня в базе данных есть столбец data json. и я использую фильтр по языку-> имени в столбце data json. вот это languages массив в data json столбце

"languages": [
  {
    "name": "Russian",
    "value": 1,
    "checked": true,
    "editable": false,
    "deletable": false,
    "license_id": 5595
  },
  {
    "name": "English",
    "value": null,
    "checked": false,
    "editable": false,
    "deletable": false
  }
]

Я использовал

$report_citizen = CitizenService::with('service_status', 'citizen.region', 'citizen.city')
    ->whereJsonContains('data->languages', [['name' => "Russian"], ['checked' => false] ])
    ->get();

, но этот ответ тоже возвращает мне checked:true. но ответа не должно было быть, потому что я отфильтровал checked:false. что я могу сделать?

1 Ответ

0 голосов
/ 29 мая 2020

Используйте этот запрос

$report_citizen = CitizenService::with('service_status', 'citizen.region', 'citizen.city')
                                 ->whereJsonContains("data->languages->name","Russian")
                                 ->whereJsonContains("data->languages->checked","false")
                                 ->get();

Если вы хотите выбрать несколько значений, напишите такой запрос

$report_citizen = CitizenService::with('service_status', 'citizen.region', 'citizen.city')
                                 ->whereJsonContains("data->languages->name",["Russian", "English"])
                                 ->whereJsonContains("data->languages->checked","false")
                                 ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...