Я получаю ближайший к идентификатору водителя, используя ниже laravel код
$nearest_car = DriverLocation::select(DB::raw('*, ( 6371 * acos( cos( radians('.$pickup_latitude.') ) * cos( radians( latitude ) ) * cos(radians( longitude ) - radians('.$pickup_longitude.') ) + sin( radians('.$pickup_latitude.') ) * sin( radians( latitude ) ) ) ) as distance'))
->having('distance', '<=', 5)->where('driver_location.status','Online')->where('driver_location.car_id',$car_id);
и сохраняю детали запроса с кодом ниже, включая вышеуказанный идентификатор ближайшего водителя
$request = new Request;
$request->user_id = $rider_id;
$request->pickup_latitude = $pickup_latitude;
$request->pickup_longitude = $pickup_longitude;
$request->drop_latitude = $drop_latitude;
$request->drop_longitude = $drop_longitude;
$request->driver_id = $nearest_car->user_id;
$request->car_id = $car_id;
$request->pickup_location = $pickup_location;
$request->drop_location = $drop_location;
$request->payment_mode = $payment_method_store;
что я Вы хотите получить несколько ближайших различных идентификаторов драйвера (например, от 5 до 10 ближайших идентификаторов) и сохранить все идентификаторы как разделенные запятыми значения в столбце driver_id
. Все вышеперечисленные детали одинаковы для всех драйверов. Нужно только получить все ближайшие идентификаторы драйверов и сохранить их в виде значений, разделенных запятыми, как показано ниже: