我能把我的变量从foreach循环中取出来吗?并将其和响应一起发送给所有用户Data


  1. 是否可以同时获取用户详细信息和距离以及用户详细信息

  2. 我想要$data变量中的所有用户详细信息以及$distance

  3. 两个变量都应该在响应中

    public function getProfessionalByCityLatLon(Request $request)
    {
    $data = DB::table('profiles')
    ->leftJoin('cities','profiles.city','=','cities.id')
    ->leftJoin('users', 'profiles.user_id', '=', 'users.id')
    ->where('cities.name', '=', $request->select_city)                        
    ->get();
    foreach($data as $data1){
    $longitude1 = 23.6676092; // i will get it later from $request 
    $latitude1 = 86.0490814; // Same with this also
    $longitude2 = $data1->longitude;
    $latitude2 = $data1->latitude;
    $unit = 'kilometers';
    $theta = $longitude1 - $longitude2; 
    $distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta))); 
    $distance = acos($distance); 
    $distance = rad2deg($distance); 
    $distance = $distance * 60 * 1.1515; 
    switch($unit) { 
    case 'miles': 
    break; 
    case 'kilometers' : 
    $distance = $distance * 1.609344;
    $distance = $distance * 1000;  
    } 
    $profDistance = (round($distance, 2));
    }
    $response = [
    'success' => true,
    'distance' => $profDistance,
    'user' => $data,
    'message' => 'City retrieved successfully.',
    ];
    Log::info($response);
    return response()->json($response, 200);
    }
    

我找到了解决方案,实际上,首先,我想要数据库中的所有记录,其中城市名称和类别根据参数,然后我想计算每个记录来自数据库的距离。

public function getProfessionalByCity($id, $currentLat, $currentLon)
{
Log::info('ye city select karne k baad on load calling ');
// Log::info($id);
$cityname = ucfirst($id);
$newUser = DB::table('profiles')
->leftJoin('cities','profiles.city','=','cities.id')
->leftJoin('users', 'profiles.user_id', '=', 'users.id')
->where('cities.name', '=', $cityname)
->get();
// Log::info($newUser);
$longitude1 = $currentLat;
$latitude1 = $currentLon;
foreach($newUser as $user)
{
$professionalAvatar = $user->avatar;
$profileId = $user->id;
$ProfessionalAvailable = $user->availability;
$ProfessionalName = $user->full_name;
$professionalProfession = $user->profession;
$latitude2 =  $user->latitude;
$longitude2 = $user->longitude;
$unit = 'kilometers';
$theta = $longitude1 - $longitude2; 
$distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta))); 
$distance = acos($distance); 
$distance = rad2deg($distance); 
$distance = $distance * 60 * 1.1515; 
switch($unit) { 
case 'miles': 
break; 
case 'kilometers' : 
$distance = $distance * 1.609344; 
// $distance = $distance * 1000;
}
$profId[] = $profileId ;
$calculatedDistance[] = (round($distance, 2));
$professName[] = $ProfessionalName;
$profession[] = $professionalProfession;
$availablity[] = $ProfessionalAvailable;
$avatar[] = $professionalAvatar;
// Log::info($calculatedDistance."ye h distance");
// return (round($distance,2)); 

}
for($count = 0; $count < count($calculatedDistance); $count++)
{
$data = array(
'Distance' => $calculatedDistance[$count],
'ProfessionalName' => $professName[$count],
'Profession' => $profession[$count],
'ID' => $profId[$count],
'Availablity' => $availablity[$count], 
'Avatar' => $avatar[$count],

);
$calDistance[] =$data;
} 
$response = [
'success' => true,
'data' => $calDistance,
'message' => 'City retrieved successfully.',
];
// Log::info($response);
return response()->json($response, 200);
}

最新更新