通过使用下面的laravel代码,我与驾驶员ID越来越近
$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);
并使用以下代码保存请求详细信息,包括上面最近的驱动程序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;
我想做的是获取多个最近的不同驱动程序ID(例如5到10个最近的ID),并将所有ID保存为driver_id
列中的逗号分隔值。以上所有驱动程序的详细信息都是相同的。只需要获取所有最近的驱动程序ID并将其保存为逗号分隔的值,如下图所示
假设您的DriverLocation
模型具有user_id
,则应用以下命令以逗号分隔user_id
:
$nearest_driver_ids = 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)
->get()
->implode('user_id', ',');
[implode
方法将仅从获取的user_id
列表中提取DriverLocation
,最后将它们与,
结合在一起以形成新的字符串。