在 laravel where 子句中使用 find_in_set()
Posted
技术标签:
【中文标题】在 laravel where 子句中使用 find_in_set()【英文标题】:Using find_in_set() in laravel where clause 【发布时间】:2019-09-08 10:42:42 【问题描述】:我知道我可以像下面这样使用 find_in_set:
select `id` from `questions` where FIND_IN_SET(8, categories);
但我正在使用 laravel,我想在那里写这个查询。我试过这个:
$q_category = 8;
$object = DB::table("questions")
->select('id')
->where(DB::RAW("FIND_IN_SET($q_category, categories)"), '!=', null)
->get();
获取在其categories
列中具有8
的记录(其中包含逗号分隔的类别ID)
但我也得到了没有类别 ID 的记录。
我哪里错了?
【问题讨论】:
【参考方案1】:我发现您当前的代码存在几个潜在问题。首先,您应该将$q_category
值绑定到对FIND_IN_SET
的调用。其次,对FIND_IN_SET
调用成功的检查是返回值大于零,而不是非NULL
。
$q_category = 8;
$object = DB::table("questions")
->select('id')
->whereRaw("FIND_IN_SET(?, categories) > 0", [$q_category])
->get();
【讨论】:
以上是关于在 laravel where 子句中使用 find_in_set()的主要内容,如果未能解决你的问题,请参考以下文章
如何在 switch 语句中使用 laravel 模型运行多个 Where 子句
在 where 子句 laravel 中使用 Json 属性