如何在laravel中使用逗号分隔值的列上使用'where'

Posted

技术标签:

【中文标题】如何在laravel中使用逗号分隔值的列上使用\'where\'【英文标题】:How to use 'where' on column with comma separated values in laravel如何在laravel中使用逗号分隔值的列上使用'where' 【发布时间】:2016-02-03 06:41:47 【问题描述】:

我正在使用带有 laravel 框架的 php。我想从包含用户 ID 的表中获取行。这里的问题是用户 id 是整数值,并且 column(author) 包含多个以逗号分隔的整数值。这是一个例子。

DB::table('stories')->where('author','4')->get();

作者列具有值:第 1 行:2,4,5 |第 2 行:1,3,14 |第 3 行:4,5 我会得到第 1 行和第 3 行。所以,请帮助我得到正确的行。

【问题讨论】:

【参考方案1】:

你可以像 as 一样使用whereRaw

DB::table('stories')->whereRaw("find_in_set('4',author)")->get();

【讨论】:

【参考方案2】:

首先使用

将您的 string 转换为 array
$row = "2,4,5";
$idsArr = explode(',',$row);  
DB::table('stories')->whereIn('author',$idsArr)->get();

【讨论】:

如果可以简单地使用find_in_set,为什么要将字符串转换为数组 @uchicha 你是对的..但是不同的人有不同的头脑,不同的头脑有不同的逻辑方式...... :)

以上是关于如何在laravel中使用逗号分隔值的列上使用'where'的主要内容,如果未能解决你的问题,请参考以下文章

如何根据两个逗号分隔值的列中的任何一个值获取记录

包含逗号分隔值的列中的值

使用 laravel 和 vue js 从 mysql 数据库中检查带有逗号分隔值的复选框

Laravel 验证 - 逗号分隔的字符串输入为数组

获取用逗号分隔的值的计数[重复]

如何在具有空值的列上使用`jsonb_set`