с помощью (1) я получаю желаемый результат из запроса laravel.Но как только я переключаю жестко запрограммированную «рыбу» на переменную типа $ str = 'fish', я получаю синтаксические ошибки.
(1) $find = animal::whereRaw('JSON_CONTAINS(animal_category, \'{"item_text": "fish"}\')')->get();
Я уже перепробовал все виды вариаций, используя 'или `или'Например, почти в любом месте:
$find = animal::whereRaw("JSON_CONTAINS(animal_category, \'{'item_text': $str}\')")->get();
или
$str = 'fish'
$str2 = "\'{'item_text': $str}\'"
$find = animal::whereRaw("JSON_CONTAINS(animal_category, $str2)")->get();
, но не имеет значения, что я пытаюсь, всегда синтаксическая ошибка или пусто, потому что запрос ищет '$str2 '.
Я тоже пытался без \ {"item_text": "fish"}
. Все еще синтаксическая ошибка ...
Что я должен сделать, чтобы получить тот же результат, что и в жестко заданном примере?
Моя настройка: Laravel 5.8, mysql 5.7.14
Заранее большое спасибо. =)
Дополнительная информация Животные MySQL Column выглядят как
[{"item_id": 1, "item_text": "fish"}, {"item_id": 6, "item_text": "birds"}]
Может быть, естьтогда есть другой подход, тогда json_contains, чтобы получить данные с помощью предложения where?:)