Как получить данные из SQL в laravel с помощью функции whereIn и take? - PullRequest
1 голос
/ 03 апреля 2020

Как я могу получить данные каждого значения в массиве. Я хочу только 1 результат из обоих значений.

$userBikes = array('862549040389788','12345');


$data = DB::table('geolocation')
->whereIn('Imei',$userBikes)
->take(1)      
->get();

Результат:

["28.537857", "77.269325", "862549040389788"]

, но я ожидаю этого результата:

["28.537857", "77.269325", "862549040389788"]
["28.537857", "77.269325", "12345"]

Ответы [ 3 ]

1 голос
/ 03 апреля 2020

На основании ваших комментариев, я думаю, вы хотите группу по запросу.

$userBikes = array('862549040389788','12345');

$data = DB::table('geolocation')
->whereIn('Imei', $userBikes)
->groupBy('Imei')
->selectRaw('any_value(id) as id, any_value(Lat) as Lat, any_value(Lng) as Lng, any_value(created_at) as created_at, Imei')
->get();
1 голос
/ 03 апреля 2020

Вам нужно сделать 2 разных запроса, если вам нужно 1 значение для каждого элемента в массиве $userBikes.

$userBikes = array('862549040389788','12345');
$output = array();


foreach($userBikes as $imei) { 
    $data = DB::table('geolocation')
       ->where('Imei',$imei)
       ->take(1)      
       ->get()->toArray();
    array_push($output, $data)
return $output;

Вторым решением является удаление take(1) из запроса и фильтрация каждого значения из объекта данных. .

0 голосов
/ 03 апреля 2020

Вы должны удалить take(1) из запроса.

Take (1) ограничит результаты до 1 строки.

Так должно быть:

$data = DB::table('geolocation')
->whereIn('Imei',$userBikes)      
->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...