Получить все строки в одном запросе с несколькими идентификаторами

У меня есть таблица asset_request с полями id и request_id.
Я хочу выбрать несколько строк с определенными идентификаторами.

$ids = $request->ids // 5,6

Я хочу выбрать только строки с идентификаторами 5 и 6 в таблице запроса

$ids = $request->ids;
$asset_request = asset_request::whereIn('id',array($ids))->first(); //gets only 6th row.

Мне нужно получить все строки, соответствующие заданным идентификаторам.

Попробуйте ->get(); !! Нравится: $asset_requst=asset_request::whereIn('id',array($ids))->get(‌​);

Hiren Gohel 10.04.2018 09:41

вы можете поделиться своим html файлом?

Saengdaet 10.04.2018 09:43

@james, зачем вам HTML-файл? Это запрос контроллера ...

Option 10.04.2018 09:45

потому что я не могу представить, как работает ваш код, и не совсем уверен в вашей проблеме. Я знаю только причину, по которой вы можете получить только 6-ю строку, потому что вы используете first() .. если вы хотите получить более одной строки данных, вы должны использовать get()

Saengdaet 10.04.2018 09:47
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
2
4
1 739
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

DB::table('asset_request')
           ->whereIn('id', (array) $request->ids)
           ->get();

или же

TableModel::whereIn('id', (array) $request->ids)->get();

Операция получает через запрос $, не жестко кодируя идентификатор.

Option 10.04.2018 10:00

@Option $ запрос-> идентификаторы это строка или массив?

Mike Foxtech 10.04.2018 10:12

Частично это была проблема, с которой операционная система не передавала обратно как массив, поэтому на нее также нужно было ответить.

Option 10.04.2018 10:26

$ request-> ids массив

user3386779 10.04.2018 10:34
Ответ принят как подходящий

Чтобы уточнить после обсуждения в чате с оператором:

Операция возвращала строковый запрос, поэтому Операции необходимо было изменить следующее:

$id = $request->id;

$ids = str_split(str_replace(',', '', $id));

$asset_request = asset_request::whereIn('id', $ids)->get();

$ id = массив ($ request-> ids); $ asset_requst = asset_request :: whereIn ('id', $ id) -> получить (); По-прежнему получается одна строка. Что я сделал не так

user3386779 10.04.2018 10:36

@ user3386779, над запросом выполните dd($ids) и скажите мне, сколько он возвращается.

Option 10.04.2018 10:37

dd ($ ids) равно "6,5"

user3386779 10.04.2018 10:40

@ User3386779, и он возвращается как массив?

Option 10.04.2018 10:40

выберите * из asset_request, где id в (6,5) он отображает 2 строки в php mysql, но не в приложении

user3386779 10.04.2018 10:42

Позвольте нам продолжить обсуждение в чате.

user3386779 10.04.2018 10:44

Сначала вы вызываете метод first, который вернет только первую совпавшую строку. Вам нужно вызвать метод get, чтобы сопоставить все строки.

Во-вторых, если вы отправляете ids в виде строки, разделенной запятыми, вам необходимо преобразовать его в массив с помощью explode.

$ids = $request->ids;
$asset_requst = asset_request::whereIn('id', explode(",", $ids))->get();

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