У меня проблемы с поиском вложенного массива JSON в приложении Laravel 6 с PostgreSQL в качестве БД.
Миграция:
$table->bigIncrement('id');
$table->string('comment')->nullable();
$table->jsonb('result')->nullable()
Модель:
protected $casts = [
'result' => 'json'
];
JSONпример:
{
"suggestions": [
{
"value": "short value",
"unrestricted_value": "full lenght value",
"data": {
"postal_code": "",
"country": "",
"country_iso_code": "RU",
...
other fields
...
"qc": null
}
}
]
}
Мне нужно запросить JSON по коду страны.
Команды, которые я пробовал:
>>> Model::where('result->suggestions->0->data->country_iso_code', 'RU')->first()
=> null
>>> Model::where('result->suggestions->data->country_iso_code', 'RU')->first()
=> null
>>> Model::where('result->suggestions.data->country_iso_code', 'RU')->first()
=> null
>>> Model::where('result->suggestions->data->country_iso_code', 'RU')->first()
=> null
>>> Model::whereJsonContains('result->suggestions', ['data->country_iso_code' => 'RU'])->first()
=> null
>>> Model::whereJsonContains('result', ['suggestions' => ['data->country_iso_code' => 'RU']])->first()
=> null
Мне нужна помощь, я застрял. Заранее спасибо.
Примечание: я не могу изменить таблицу базы данных и способ хранения данных, поскольку данные передаются другим приложениям.
PS: извините за плохой английский, это не такмой родной язык