我使用Laravel 5.6和mysql数据库。
我的Laravel雄辩查询是这样的:
Order::where('information->owner', 'like', '%'.$receipt.'%')->paginate(5);
信息字段是JSON类型。
{"owner": "Chelsea"}
如果$receipt
为Chel
,则查询会返回结果。
但如果$receipt
为chel
或CHEL
,则结果为空
我该如何解决这个问题?
答案 0 :(得分:3)
尝试在转换为小写或大写后比较值。
Order::whereRaw('LOWER(JSON_EXTRACT(information, "$.owner")) like ?', ['"%' . strtolower($receipt) . '%"'])
->paginate(5);
答案 1 :(得分:0)
如果每位所有者都以大写首字母开头,您可以使用ucfirst
大写字母的第一个字母
$receipt = ucfirst($receipt);
Order::where('information->owner', 'like', '%'.$receipt.'%')->paginate(5);