在列 Laravel 5.4 中应用字符串函数
Applying string function in column Laravel 5.4
我用的是最新的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()
两者均失败并出现以下错误:
Illuminate\Database\QueryException with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'upper(name)' in 'where clause' (SQL: select * from users
where upper(name)
LIKE %FOO%)'
查询似乎失败了,因为 Eloquent 用反引号(“`”、“`”)包裹了 upper(email)
语句。有没有办法解决这个问题,或者我是否必须使用特定的 eloquent 函数将列转换为大写、小写、e.t.c?
您可以在 laravel 中使用 whereRaw() 来实现此目的:
User::whereRaw("upper(name) LIKE '%FOO%'")
->get();
使用DB::raw()
User::where(DB::raw('upper(name)'), 'LIKE', '%FOO%')->get()
它会生成这样的查询
"select * from `users` where upper(name) LIKE ?"
我用的是最新的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()
两者均失败并出现以下错误:
Illuminate\Database\QueryException with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'upper(name)' in 'where clause' (SQL: select * from
users
whereupper(name)
LIKE %FOO%)'
查询似乎失败了,因为 Eloquent 用反引号(“`”、“`”)包裹了 upper(email)
语句。有没有办法解决这个问题,或者我是否必须使用特定的 eloquent 函数将列转换为大写、小写、e.t.c?
您可以在 laravel 中使用 whereRaw() 来实现此目的:
User::whereRaw("upper(name) LIKE '%FOO%'")
->get();
使用DB::raw()
User::where(DB::raw('upper(name)'), 'LIKE', '%FOO%')->get()
它会生成这样的查询
"select * from `users` where upper(name) LIKE ?"