在Laravel 5.4列中应用字符串函数

dim*_*cas 2 php laravel eloquent sql-like laravel-5

我正在使用最新的Laravel 5.4

我试图通过名称进行简单的查询来搜索用户.为MySQL编写的查询如下所示:

SELECT *
FROM users
WHERE upper(name) LIKE '%FOO%';
Run Code Online (Sandbox Code Playgroud)

我正试图让它与Eloquent合作.我尝试但失败的事情:

  1. User::where('upper(name)', 'LIKE', '%FOO%')->get()

  2. DB::table('users')->where('upper(name)', 'LIKE', '%FOO%')->get()

两者都失败并出现以下错误:

照亮\数据库\ QueryException与消息'SQLSTATE [42S22]:柱未找到:1054未知列'上(名)'在'where子句'(SQL:SELECT*FROM users其中upper(name)LIKE%FOO%)'

查询似乎失败了,因为Eloquent upper(email)用反引号("`","`")包装 语句.有没有办法绕过这个问题或者我是否必须使用特定的雄辩函数将列转换为大写,小写等?

Nik*_*aut 11

使用 DB::raw()

User::where(DB::raw('upper(name)'), 'LIKE', '%FOO%')->get()
Run Code Online (Sandbox Code Playgroud)

它会生成这样的查询

"select * from `users` where upper(name) LIKE ?"
Run Code Online (Sandbox Code Playgroud)