@GrimJack

Как сделать выборку whereIn на два массива?

Пишу платформу на laravel 5.5
Есть два массива, один хранится в бд, второй мы передаем в запрос через ORM.
Оба массива одномерные, вида [0, 5, 87]
Нужно передать в запрос первый массив для сравнения с массивом из бд
Для выборки должно совпасть хотя бы одно из значений
Как это правильно сделать? При
$query->where('permission_group', '?|', [0, 5])->get()

Я получаю ошибку
spoiler
SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error at or near "$2"
LINE 1: ...m "forms" where "archive" = $1 and "permission_group" $2| $3
^ (SQL: select "form_id", "form_category_id", "form_name", "sequence_order", "permission_group" from "forms" where "archive" = 0 and "permission_group" 0| 5)

Как сделать это правильно?
  • Вопрос задан
  • 484 просмотра
Пригласить эксперта
Ответы на вопрос 3
Sanasol
@Sanasol Куратор тега Laravel
нельзя просто так взять и загуглить ошибку
whereIn же прямо в вопросе, почему в коде-то его нет?

->whereIn('column', $array)

?|

а это вообще что такое?
Ответ написан
Markus_Kane
@Markus_Kane
Full-stack developer (Symfony, Laravel, Vue.js)
В Eloquent есть метод whereIn, в который Вы в качестве первого параметра передаете поле, по которому Вы производите сравнение, а во второй параметр передаете массив, по которому Вы делаете выборку.
Пример:
$query->whereIn('id', [1024, 2048, 4096]);
Здесь Вы достанете из базы только те записи, в которых id соответствует числам, перечисленным в переданном во второй параметр массиве.
Ответ написан
Комментировать
Insolita
@Insolita
Отчаянная домохозяйка
Или вы хотите сделать выборку используя тип поля массив в базе функционалом БД? Какая бд - mysql?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы