Lpc*_*ark 14 mysql orm lowercase laravel eloquent
我试图使用Eloquent运行查询$ vars ['language']是小写的,但语言列不一定是小写的.如何使用eloquent进行此搜索,但在查询中仍然使用小写
Item::where('language', $vars['language'])
Run Code Online (Sandbox Code Playgroud)
我想做的就是这个,即使我无法在任何地方找到如何做到这一点
Item::where('LOWER(language)', $vars['language'])
Run Code Online (Sandbox Code Playgroud)
这样它们都是小写的然后我可以让它们匹配.
Mar*_*ala 36
更新:如果您的MySql版本不支持ilike,则使用带参数绑定的whereRaw来清理您的whereRaw语句:
$term = strtolower($vars['language']);
Item::whereRaw('lower(language) like (?)',["%{$term}%"])->get();
Run Code Online (Sandbox Code Playgroud)
与未经过版本化的版本:
Item::where('language', 'ilike', $vars['language'])->get();
Run Code Online (Sandbox Code Playgroud)
上一个答案
尝试ilike在您的位置使用运算符.例如
protected $operators = array(
'=', '<', '>', '<=', '>=', '<>', '!=',
'like', 'not like', 'between', 'ilike',
'&', '|', '^', '<<', '>>',
);
Run Code Online (Sandbox Code Playgroud)
所有可用的运营商是:
$term = strtolower($vars['language']);
Item::whereRaw('lower(language) like (?)',["%{$term}%"])->get();
Run Code Online (Sandbox Code Playgroud)
编辑:ilike不区分大小写like.
igo*_*s07 13
根据这篇文章,解决这个问题的独立于数据库的方法是:
Item::whereRaw('LOWER(language) = ?', [$vars['language']])->get();
Run Code Online (Sandbox Code Playgroud)