У меня есть таблица 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.
Мне нужно получить все строки, соответствующие заданным идентификаторам.
вы можете поделиться своим html файлом?
@james, зачем вам HTML-файл? Это запрос контроллера ...
потому что я не могу представить, как работает ваш код, и не совсем уверен в вашей проблеме. Я знаю только причину, по которой вы можете получить только 6-ю строку, потому что вы используете first() .. если вы хотите получить более одной строки данных, вы должны использовать get()






DB::table('asset_request')
->whereIn('id', (array) $request->ids)
->get();
или же
TableModel::whereIn('id', (array) $request->ids)->get();
Операция получает через запрос $, не жестко кодируя идентификатор.
@Option $ запрос-> идентификаторы это строка или массив?
Частично это была проблема, с которой операционная система не передавала обратно как массив, поэтому на нее также нужно было ответить.
$ request-> ids массив
Чтобы уточнить после обсуждения в чате с оператором:
Операция возвращала строковый запрос, поэтому Операции необходимо было изменить следующее:
$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, над запросом выполните dd($ids) и скажите мне, сколько он возвращается.
dd ($ ids) равно "6,5"
@ User3386779, и он возвращается как массив?
выберите * из asset_request, где id в (6,5) он отображает 2 строки в php mysql, но не в приложении
Позвольте нам продолжить обсуждение в чате.
Сначала вы вызываете метод first, который вернет только первую совпавшую строку.
Вам нужно вызвать метод get, чтобы сопоставить все строки.
Во-вторых, если вы отправляете ids в виде строки, разделенной запятыми, вам необходимо преобразовать его в массив с помощью explode.
$ids = $request->ids;
$asset_requst = asset_request::whereIn('id', explode(",", $ids))->get();
Попробуйте
->get();!! Нравится:$asset_requst=asset_request::whereIn('id',array($ids))->get();