Добрый день,
Я хотел сделать что-то вроде этого:
$ids = [1, 2, 3];
$posts = $user->posts()->whereIn('id', $ids)->get();
но я получаю внутреннюю ошибку сервера. Есть другой способ сделать это?
Для этого примера предположим, что идентификатор не является первичным ключом и что несколько сообщений могут иметь один и тот же идентификатор. Итак, это:
$ids = [1, 2, 3];
$posts = Post::whereIn('id', $ids)->get();
не вернет желаемых результатов.
предполагая, что вы хотели написать whereIn('id', $ids)
почему вы передаете arr в качестве параметра вместо $ ids?
Вы также можете попробовать сделать это $posts = Post::whereIn('id', arr)->toSql(); и проверить, успешно ли создается запрос.
Возможный дубликат Laravel где В ИЛИ где В
Да, я хотел сказать $ ids. Я получаю ошибку во второй строке первого кода.
@LukhoMdingi Не могли бы вы выложить ошибку?
Ответ @ Sohel0415 сработал. Спасибо вам всем.






Причина, по которой у вас возникает ошибка, заключается в том, что mysql не может определить, какой table у вас referring с столбцом id. Используйте tableName в whereIn() clouse
$posts = $user->posts()->whereIn('posts.id', $ids)->get();
Примечание: Я предполагаю, что ваше имя таблицы Post - posts
может кто-нибудь объяснить мне, почему голосование против этого ответа?
Это помогло. Спасибо. Я не тот, кто проголосовал против.
причина, по которой у вас возникла ошибка, заключается в том, что mysql не может найти, к какой таблице вы ссылаетесь с помощью столбца идентификатора
@LukhoMdingi см. Мой обновленный ответ, он даст вам четкое представление о проблеме, с которой вы столкнулись.
пожалуйста, используйте как
$items = DB::table('items')->whereIn('id', [1, 2, 3])->get();
ссылка: Laravel -> где ('id', ARRAY). несколько, где условия laravel 4
А также
User::select('id','name','email','phone','created_at')->whereIN('id',[1,2,3,4,5,6,7,8,9,9,10,11])->where('is_guest',NULL)->where('user_type','1')->orderBy('id','desc')->take(20)->get();
также работают с laravel 5.4
Мне не удалось попробовать это. Ответ @ Sohel0415 сработал. Спасибо за ваш вклад.
Какую фактическую ошибку вы получаете?