首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Laravel concat查询返回0项

Laravel concat查询返回0项
EN

Stack Overflow用户
提问于 2021-07-03 17:42:40
回答 1查看 88关注 0票数 0

这是我的控制器代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if ($request->exists('tipo')) {
    $valor = $request->value;
    $candidates = Candidate::buscarpor($tipo, $valor)
                           ->orderBy('id', 'desc')
                           ->Paginate(5)
                           ->withQueryString();
    dd($candidates);
}

这就是我的“候选”模型中的范围"buscarpor“:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public function scopeBuscarpor($query, $tipo, $valor)
{
    if(($tipo) && ($valor)) {
        if($tipo == 'names') {
            // return $query->orWhereRaw("concat(name, ' ', last_name) like '%".$valor."%' ");
            return $query->where(DB::raw("CONCAT('name', ' ', 'last_name')"), 'like', '%'.$valor.'%')
                         ->orWhere(DB::raw("CONCAT('last_name', ' ', 'name')"), 'like', '%'.$valor.'%');
        }
            
        return $query->where($tipo, 'like', "%$valor%");
    }
}

当搜索是“名称”类型时,我应该在DB中查询,使用候选人的名字或姓氏搜索候选人/人,我只有一个输入类型的文本,我只写了他所有的名字就是这个输入类型的文本。

这个范围内的变量$valor有数据,没有问题。我测试了添加数据库中存在的名称,但它返回0项。

这是我的dd($candidates)输出。

我不知道我做错了什么,请各位,如果你们对如何解决这个问题有一些想法,我会很感激的。非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-03 21:53:09

可能where表达式的格式不正确。试着像这样写

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$query->where(DB::raw("CONCAT('name', ' ', 'last_name') like '%?%'", [$valor]))
      ->orWhere(DB::raw("CONCAT('last_name', ' ', 'name') like '%?%'", [$valor]));

您也可以使用whereRaw()语法代替。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$query->whereRaw("CONCAT('name', ' ', 'last_name') like '%?%'", [$valor])
      ->orWhereRaw("CONCAT('last_name', ' ', 'name') like '%?%'", [$valor]);

或者名字是用大写字母写在数据库里的?如果使用postgreSQL,则可以使用ilike而不是like进行不区分大小写的搜索。

如果使用MySQL,则可能必须在原始方法中使用lower()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$query->whereRaw("LOWER(CONCAT('name', ' ', 'last_name')) like '%?%'", [$valor])
      ->orWhereRaw("LOWER(CONCAT('last_name', ' ', 'name')) like '%?%'", [$valor]);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68241080

复制
相关文章
如何在 Linux 像 Vim Pro 一样使用 vimdiff
Vim 是一款强大的文本编辑器,被广泛用于程序开发和日常文本编辑。它的灵活性和可扩展性使得它成为程序员最喜欢的编辑器之一。Vim Pro 是一个增强版的 Vim,提供了更多的功能和插件,使得编辑体验更加高效和愉悦。其中,vimdiff 是 Vim Pro 中一个非常有用的功能,用于比较和合并文件差异。本文将详细介绍如何像 Vim Pro 一样使用 vimdiff。
网络技术联盟站
2023/06/18
5960
如何在 Linux 像 Vim Pro 一样使用 vimdiff
进入编辑模式 , vim命令模式 , vim实践
所谓编辑模式就是进入可以编辑文件内容的状态,就和进入word文档进入记事本是一样的,最普遍进入编辑模式的方式就是按i,即进入当前光标所在位置的编辑模式。下面介绍几种进入编辑模式的方式:
端碗吹水
2020/09/23
2.2K0
进入编辑模式 , vim命令模式 , vim实践
5.6 vim命令模式
搜索内容 在命令模式中,用 /root (root为要搜索的内容)去搜索,然后会高亮显示出来,从上往下查找 按 n 键,会从上到下依次显示出搜索内容(搜索到最后一个 高亮的词 会在左下角提示) 按 shift+n 键或 N 键,向上查看 用 ?root (root为要搜索的内容)去搜索,高亮显示,从下往上查找 按 n 键,从下往上依次查看高亮显示的内容 按shift+n 键或 N 键,从上往下查看高亮显示的内容 替换内容 批量更换内容 :/1,100s/root/hanfeng/g 表示在1
运维小白
2018/02/06
6660
5.6 vim命令模式
技巧:Vimdiff 使用
各种 IDE 大行其道的同时,传统的命令行工具以其短小精悍,随手可得的特点仍有很大的生存空间,这篇短文介绍了一个文本比较和合并的小工具:vimdiff。希望能对在 Unix/Linux 系统上进行开发的朋友有所帮助。
菲宇
2019/06/12
1.9K0
技巧:Vimdiff 使用
vim的编辑模式,命令模式以及vim的实践
vim编辑模式:               从一般模式进入编辑模式,只需按i、I、a、A、o、O、r和R中的某一个键即可,当进入编辑模式时,在屏幕的尾行显示INSERT字样(若支持中文,则显示插入)。按Esc键,从编辑模式回到一般模式。              i(小写) 从目前光标所在处插入。              I (大写)从目前光标所在处第一个非空格开始插入。              a 从光标所在处的下一个字符开始插入。              A 从光标所在处行的最后一个字符卡是插入
叶瑾
2018/06/14
1.6K0
vim常用命令(命令模式、末行模式)
以下是vim操作一些基础的命令,分为两种模式总结整理,分别为命令模式、末行模式,建议读者学习的同时能配合实际的操作,这样会记得更加牢固。
秃头哥编程
2019/08/13
2.4K0
VIM命令模式与输入模式切换
vi是UNIX和类UNIX环境下的可用于创建文件的屏幕编辑器。vi有两种工作模式:命令模式和文本输入模式。启动vi需要输入vi,按[Spacebar]键并输入文件名后回车。
全栈程序员站长
2022/07/07
2K0
VIM命令模式与输入模式切换
linux下vim命令详解
高级一些的编辑器,都会包含宏功能,vim当然不能缺少了,在vim中使用宏是非常方便的:
全栈程序员站长
2022/07/07
2.5K0
vim命令下显示行号[通俗易懂]
在vim的命令模式下,在光标 停留处,退出命令模式,然后输入 :nu ,即可显示当前这行的号码
全栈程序员站长
2022/07/28
2.5K0
vim命令下显示行号[通俗易懂]
vim使用命令详解
x 删除光标所在字母(其实是光标后) X删除光标前所在字母) dw删除一个单词,光标要在当前单词的第一个字符前面 u 撤销操作 d0删除光标前面的字符 d$或者D删除光标后面的字符 dd删除光标所在的行 ndd删除光标所在行往后的n行(n是自然数,包括本行)
Y大宽
2019/05/22
1.1K0
Vim命令–日常使用的Vim备忘单
VI改进的文本编辑器或VIM文本编辑器是一个可用于CLI和GUI界面的开源解决方案。在本篇文章中,您将找到在CLI界面中使用文本文件时所需的大部分Vim命令。
用户6543014
2020/03/10
5900
Vim命令–日常使用的Vim备忘单
Vim命令使用说明
vim是我最喜欢的编辑器,也是linux下第二强大的编辑器。 虽然emacs是公认的世界第一,我认为使用emacs并没有使用vi进行编辑来得高效。 如果是初学vi,运行一下vimtutor是个聪明的决定。 (如果你的系统环境不是中文,而你想使用中文的vimtutor,就运行vimtutor zh)
mikelLam
2022/10/31
2.7K0
vim使用命令总结
“/”查找: 光标往下查找,到尾部再重头查找 输入“/”,会在最后显示/,输入想查询的内容然后回车,会以黄色高亮显示。摁n会往下逐个显示黄色高亮区域,N会往上逐个查找。
好派笔记
2021/09/15
3520
vim常用命令详解(vim使用教程)
当然有很多解读不准确的地方,所有红色标注的地方都是最基本的,也是保证正确的。(不排除我的语言描述有问题)
全栈程序员站长
2022/07/28
3.4K0
vim常用命令详解(vim使用教程)
vim 从嫌弃到依赖(8)——使用命令模式编辑文本
通过前面的文章,我们已经介绍了vim的普通模式、插入模式、可视模式。接下来让我们接着介绍vim中另一个强大的模式——命令行模式
Masimaro
2022/05/10
5590
vim 从嫌弃到依赖(8)——使用命令模式编辑文本
Linux命令之vim三种模式
①光标移动到行首 按键:shift + 6 或 ^(T字母上面的6,不要按小键盘的6)
兮动人
2021/06/11
3.6K0
Linux命令之vim三种模式
Vim 模式
Vim和Vi一样具有三种模式:命令模式(Command mode),插入模式(Insert mode)和底线命令模式(Last line mode)。
Yif
2019/12/26
5570
vim命令
光标移动: h,j,k,l h #表示往左,j表示往下,k表示往右,l表示往上 Ctrl f #上一页 Ctrl b #下一页 w, e, W, E #跳到单词的后面,小写包括标点 b, B #以单词为单位往前跳动光标,小写包含标点 O #开启新的一行 ^ #一行的开始 $ #一行的结尾 gg #文档的第一行 [N]G #文档的第N行或者最后一行 插
二十三年蝉
2018/08/27
5240
vim使用-常用命令
vim里操作的是寄存器,不是系统剪贴板,默认我们使用d删除或者y复制的内容都是放到了“无名寄存器”。 比如交换字符小技巧:可以使用x将一个字符放到无名寄存器,然后p将无名寄存器里的内容进行粘贴,可以达到交换字符位置的一个目的。
茶半香初
2021/11/26
1.5K0
vim使用-常用命令
Mac之vim普通命令使用
稍微解释一下,当在normal模式下输入:qx后,你对文本的所有编辑动作将会被记录下来,再次输入q即退出了记录模
用户3621210
2020/09/08
6.3K1

相似问题

vimdiff不能作为“vim”使用

222

如何在插入模式下使用VIM普通模式命令(遍历文本)

14

如何在vim中退出vimdiff模式,特别是对于逃犯?

14309

在Vim的命令模式下导航

50

命令模式下的vim路径完成

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文