Использование find_in_set () в предложении laravel where - PullRequest
1 голос
/ 18 апреля 2019

Я знаю, что могу использовать 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();

чтобы получить записи с 8 в столбце categories (который содержит разделенные запятыми идентификаторы категории)

Но я получаю записи, которые тоже не имеют идентификатора категории.

где я иду не так?

1 Ответ

2 голосов
/ 18 апреля 2019

Я вижу несколько потенциальных проблем с вашим текущим кодом. Во-первых, вы должны привязать значение $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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...