#laravel #find-in-set
#laravel #найти в наборе
Вопрос:
Я знаю, что могу использовать 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:
Я вижу несколько потенциальных проблем с вашим текущим кодом. Во-первых, вы должны привязать $q_category
значение к вызову FIND_IN_SET
. Во-вторых, проверка успешного вызова FIND_IN_SET
заключается в том, что возвращаемое значение больше нуля, в отличие от non NULL
.
$q_category = 8;
$object = DB::table("questions")
->select('id')
->whereRaw("FIND_IN_SET(?, categories) > 0", [$q_category])
->get();