【问题标题】:Using find_in_set() in laravel where clause在 laravel where 子句中使用 find_in_set()
【发布时间】: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 的记录。

我哪里错了?

【问题讨论】:

    标签: laravel find-in-set


    【解决方案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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-18
      • 1970-01-01
      • 2021-05-05
      • 1970-01-01
      • 2020-11-28
      • 2017-11-30
      相关资源
      最近更新 更多