在Laravel 5.4列中应用字符串函数 [英] Applying string function in column Laravel 5.4

查看:62
本文介绍了在Laravel 5.4列中应用字符串函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用最新的Laravel 5.4

I'm using the latest Laravel 5.4

我正在尝试进行一个简单的查询来按名称搜索用户.为MySQL编写的查询如下所示:

I am trying to make a simple query to search users by name. The query written for MySQL looks like this:

SELECT *
FROM users
WHERE upper(name) LIKE '%FOO%';

我正在尝试使其与Eloquent一起使用.我尝试过但失败的事情:

I'm trying to make it work with Eloquent. Things I've tried but failed:

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

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

均失败,并出现以下错误:

Both fail with the following error:

Illuminate \ Database \ QueryException,消息为'SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'upper(name)'(SQL:从*用户> 中选择*其中 upper(name) LIKE%FOO%)'

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)语句.是否有办法解决此问题,还是我必须使用特定的雄辩函数将列转换为大写,小写等?

The query seems to fail because Eloquent wraps the upper(email) statement with backticks (" ` ", " ` "). Is there a way to go around this issue or do I have to use a particular eloquent function to get convert a column to uppercase, lowercase, e.t.c?

推荐答案

使用 DB :: raw()

User::where(DB::raw('upper(name)'), 'LIKE', '%FOO%')->get()

它将生成这样的查询

"select * from `users` where upper(name) LIKE ?"

这篇关于在Laravel 5.4列中应用字符串函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆