我怎样才能解决区分大小写的问题,就像Laravel中的json数据上的语句一样?

时间:2018-04-06 02:00:53

标签: mysql laravel laravel-5 laravel-eloquent laravel-5.6

我使用Laravel 5.6和mysql数据库。

我的Laravel雄辩查询是这样的:

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

信息字段是JSON类型。

{"owner": "Chelsea"}

如果$receiptChel,则查询会返回结果。

但如果$receiptchelCHEL,则结果为空

我该如何解决这个问题?

2 个答案:

答案 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);