Laravel, где в выпуске

Добрый день,

Я хотел сделать что-то вроде этого:

$ids = [1, 2, 3];
$posts = $user->posts()->whereIn('id', $ids)->get();

но я получаю внутреннюю ошибку сервера. Есть другой способ сделать это?

Для этого примера предположим, что идентификатор не является первичным ключом и что несколько сообщений могут иметь один и тот же идентификатор. Итак, это:

$ids = [1, 2, 3];
$posts = Post::whereIn('id', $ids)->get();

не вернет желаемых результатов.

Какую фактическую ошибку вы получаете?

Sougata Bose 17.04.2018 11:02

предполагая, что вы хотели написать whereIn('id', $ids)

Sérgio Reis 17.04.2018 11:02

почему вы передаете arr в качестве параметра вместо $ ids?

punk73 17.04.2018 11:02

Вы также можете попробовать сделать это $posts = Post::whereIn('id', arr)->toSql(); и проверить, успешно ли создается запрос.

Sérgio Reis 17.04.2018 11:04

Возможный дубликат Laravel где В ИЛИ где В

Pradeep 17.04.2018 11:04

Да, я хотел сказать $ ids. Я получаю ошибку во второй строке первого кода.

Lukho Mdingi 17.04.2018 11:04

@LukhoMdingi Не могли бы вы выложить ошибку?

silkfire 17.04.2018 11:06

Ответ @ Sohel0415 сработал. Спасибо вам всем.

Lukho Mdingi 17.04.2018 11:24
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
8
498
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Причина, по которой у вас возникает ошибка, заключается в том, что mysql не может определить, какой table у вас referring с столбцом id. Используйте tableName в whereIn() clouse

$posts = $user->posts()->whereIn('posts.id', $ids)->get();

Примечание: Я предполагаю, что ваше имя таблицы Post - posts

может кто-нибудь объяснить мне, почему голосование против этого ответа?

Sohel0415 17.04.2018 11:19

Это помогло. Спасибо. Я не тот, кто проголосовал против.

Lukho Mdingi 17.04.2018 11:21

причина, по которой у вас возникла ошибка, заключается в том, что mysql не может найти, к какой таблице вы ссылаетесь с помощью столбца идентификатора

Sohel0415 17.04.2018 11:22

@LukhoMdingi см. Мой обновленный ответ, он даст вам четкое представление о проблеме, с которой вы столкнулись.

Sohel0415 17.04.2018 11:24

пожалуйста, используйте как

  $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 сработал. Спасибо за ваш вклад.

Lukho Mdingi 17.04.2018 11:23

Другие вопросы по теме