在 laravel where 子句中使用 find_in_set()
Using find_in_set() in laravel where clause
我知道我可以使用 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 的记录。
我哪里错了?
我发现您当前的代码有几个潜在的问题。首先,您应该将 $q_category
值绑定到对 FIND_IN_SET
的调用。其次,成功调用 FIND_IN_SET
的检查是 return 值是否大于零,而不是非 NULL
.
$q_category = 8;
$object = DB::table("questions")
->select('id')
->whereRaw("FIND_IN_SET(?, categories) > 0", [$q_category])
->get();
我知道我可以使用 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 的记录。
我哪里错了?
我发现您当前的代码有几个潜在的问题。首先,您应该将 $q_category
值绑定到对 FIND_IN_SET
的调用。其次,成功调用 FIND_IN_SET
的检查是 return 值是否大于零,而不是非 NULL
.
$q_category = 8;
$object = DB::table("questions")
->select('id')
->whereRaw("FIND_IN_SET(?, categories) > 0", [$q_category])
->get();