내 데이터베이스 구조 아래에 driver_location table
이 테이블에서 나는 5km 거리 내에 있고 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);
이제 내가 원하는 것은 driver_location
테이블의 각 near by user_id에 대해 요청이 bid_request
근처의 5 명의 드라이버로 제한된 테이블에 삽입되는 것 입니다. 아래와 같이 for 루프를 시도했지만 드라이버 위치 테이블에서 동일한 user_id에 대한 레코드를 여러 번 삽입하고 있습니다. 사용자 당 하나의 요청이 필요합니다.
for($i=0;$i<5;$i++){
DB::table('bid_request')->insert(
array(
'user_id' => $rider_id,
'group_id' => null,
'pickup_latitude' => $pickup_latitude,
'pickup_longitude' => $pickup_longitude,
'drop_latitude' => $drop_latitude,
'drop_longitude' => $drop_longitude,
'driver_id' => $nearest_car->user_id,
'car_id' => $car_id,
'pickup_location' => $pickup_location,
'drop_location' => $drop_location,
'payment_mode' => $payment_method_store,
'status' => 'Pending',
'is_wallet' => $is_wallet,
'driver_mobile' => $driver_details->mobile_number,
'driver_avg_ratings' => $driver_details->driver_avg_ratings,
'distance' => $dis,
'min_time' => $get_near_car_time
//minimum time and distance needs to b
)
);
}
}// end $is_wallet!='Bid'
아래 쿼리에서 5 개의 레코드 만 가져 오는 것보다 bid_request 테이블에 5 개의 레코드를 삽입하려는 경우 :
$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)
->limit(5)->get();
이제 테이블에 삽입 할 레코드 배열이 필요합니다.
$data = [];
foreach ($nearest_car as $key => $value) {
$data[] = [
'user_id' => $rider_id,
'group_id' => null,
'pickup_latitude' => $pickup_latitude,
'pickup_longitude' => $pickup_longitude,
'drop_latitude' => $drop_latitude,
'drop_longitude' => $drop_longitude,
'driver_id' => $value->user_id,
'car_id' => $car_id,
'pickup_location' => $pickup_location,
'drop_location' => $drop_location,
'payment_mode' => $payment_method_store,
'status' => 'Pending',
'is_wallet' => $is_wallet,
'driver_mobile' => $driver_details->mobile_number,
'driver_avg_ratings' => $driver_details->driver_avg_ratings,
'distance' => $dis,
'min_time' => $get_near_car_time
];
}
표에 삽입 :
DB::table('bid_request')->insert($data);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다