Mysql 如何解决Laravel eloquent中json数据上区分大小写的where like语句?

Mysql 如何解决Laravel eloquent中json数据上区分大小写的where like语句?,mysql,laravel,laravel-5,laravel-eloquent,laravel-5.6,Mysql,Laravel,Laravel 5,Laravel Eloquent,Laravel 5.6,我使用Laravel5.6和mysql数据库 我的Laravel雄辩的提问如下: Order::where('information->owner', 'like', '%'.$receipt.'%')->paginate(5); 信息字段是JSON类型 {"owner": "Chelsea"} 如果$receive是Chel,则查询返回一个结果 但是如果$receipt是chel或chel,则结果为空 如何解决此问题?如果每个所有者都以大写字母开头,则可以使用ucfirst将字

我使用Laravel5.6和mysql数据库

我的Laravel雄辩的提问如下:

Order::where('information->owner', 'like', '%'.$receipt.'%')->paginate(5);
信息字段是JSON类型

{"owner": "Chelsea"}
如果
$receive
Chel
,则查询返回一个结果

但是如果
$receipt
chel
chel
,则结果为空


如何解决此问题?

如果每个所有者都以大写字母开头,则可以使用
ucfirst
将字符串的第一个字母大写

$receipt = ucfirst($receipt);
Order::where('information->owner', 'like', '%'.$receipt.'%')->paginate(5);

尝试在转换为小写或大写后比较这些值

Order::whereRaw('LOWER(JSON_EXTRACT(information, "$.owner")) like ?', ['"%' . strtolower($receipt) . '%"'])
     ->paginate(5);

它不起作用。似乎
information->owner
也需要改成小写。如果你说得对,我已经更新了我的答案,这样你就可以使用ucfirst()了。看起来你需要先弄清楚你的数据结构,然后再将其插入数据库,我猜-可能有一个owner name字段(全部小写)+所有者名称标签和仅匹配所有者名称字段似乎我不使用这种方式。我试着这样做:。我执行我的案例。但它不起作用。似乎是因为我的案例是json。也许你可以帮我参考这可能有帮助:存在错误:
SQLSTATE[42000]:语法错误或访问冲突:1064你的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解在第1行(SQL:选择count(*)作为订单的聚合,其中较低的(信息->所有者)如%chel%)“
更改
如%?%
如%?%“
仍然存在错误。类似这样的错误:
SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解在第1行(SQL:选择count(*)作为orders中较低(information->owner)的聚合,如“%chel%”中使用“information->owner”(信息->所有者)如“%?%”的语法是否正确
这似乎不起作用,因为字段信息是json数据更新的答案。现在试试看