我正在使用最新的 Laravel 5.4
我正在尝试进行一个简单的查询来按名称搜索用户。为 MySQL 编写的查询如下所示:
SELECT *
FROM users
WHERE upper(name) LIKE '%FOO%';
我正在努力让它与 Eloquent 一起工作。我尝试过但失败的事情:
User::where('upper(name)', 'LIKE', '%FOO%')->get()
DB::table('users')->where('upper(name)', 'LIKE', '%FOO%')->get()
两者都失败并出现以下错误:
使用消息 'SQLSTATE[42S22] 照亮\Database\QueryException:未找到列:1054 'where 子句' 中的未知列 'upper(name)' (SQL: select * fromusers
where upper(name)
喜欢%FOO%)'
查询似乎失败了,因为 Eloquent 包装了upper(email)
带反引号的语句(“`”、“`”)。有没有办法解决这个问题,或者我是否必须使用特定的雄辩函数来将列转换为大写、小写等?
Use DB::raw()
User::where(DB::raw('upper(name)'), 'LIKE', '%FOO%')->get()
它会生成这样的查询
"select * from `users` where upper(name) LIKE ?"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)