2
我得到了一個運行在mysql 5.7.11上的數據庫,並將大量數據放入一個JSON列的表中。我有一個像這樣的原始查詢。Laravel mysql json數據選擇
select * from `note`
where `note_structure_id` = 3
and JSON_EXTRACT(LCASE(data), '$._letter') = 'a'
and JSON_EXTRACT(data, '$._number') = 1
在sequel pro或phpmyadmin中運行,它給了我一個結果,我期望;
{"_letter": "A", "_number": 1}
我用laravel構建的相同查詢給了我一無所獲的結果。一個空陣列。我的代碼構建相同的查詢我得到了這種類型的代碼。
$result = \DB::table('note')->where('note_structure_id', $structureId);
if(is_array($query)) {
if(isset($query['where'])) {
foreach($query['where'] AS $field => $value) {
if(is_numeric($value)) {
$result = $result->where(\DB::raw("JSON_EXTRACT(data, '$._{$field}')"), '=', $value);
}
else {
$result = $result->where(\DB::raw("JSON_EXTRACT(LCASE(data), '$._{$field}')"), '=', strtolower($value));
}
}
}
}
dd($result->get());
有沒有人知道我做錯了我的代碼什麼的。我嘗試了一切可能的修復方法,但沒有結果。
謝謝!
研究它之後來到一個結論,我需要添加JSON_UNQUOTE()圍繞JSON_EXTRACT(),它就像一個魅力! –