이것은 상당히 복잡합니다. 나는 주어진 우편 번호의 위도와 경도에 가장 가까운 것을 찾기 위해 우편 번호로 검색 할 수 없다는 것을 제외하고는 꽤 잘 작동하는 검색 경로를 가지고있다. 즉, 위도와 경도를 처리 할 수 있지만 기존 쿼리와 통합하는 방법을 모르겠습니다.다른 조인을 사용하여 laravel 5에서 위도와 경도로 가져 오기
if($request->input("postcode"))
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_URL, "http://api.postcodes.io/postcodes/" . $request->input('postcode'));
$result = json_decode(curl_exec($curl));
curl_close($curl);
$postcode_lat = $result->result->latitude;
$postcode_long = $result->result->longitude;
}
이 내 우편 번호 latitute와 경도를 얻을 수 있습니다 : 나는 우편 번호의 위도와 경도를 얻을 수있는 쿼리에 추가 할 수있는 뭔가를
$query = DB::table('dogs');
$query->leftJoin('dog_addresses','dogs.id','=','dog_addresses.dog_id');
$query->leftJoin('dog_videos','dogs.id','=','dogs_videos.dog_id');
$query->leftJoin('dogs_breeds','dogs.breed_id','=','dogs_breeds.id');
if($request->input("breed") && $request->input("breed") != "" && $request->input("breed") != "any")
{
$breed = Dog_Breed::where("breed_name", $request->input("breed"))->first();
$query->where('dogs.breed_id', $breed->id);
}
$results = $query->get();
:이 쿼리는 우편 번호가없는 검색 쿼리입니다 . 하지만 dogs 테이블에 조인 된 dog_addresses 테이블에있는 위도 및 아래 긴 열을 기반으로 위치를 기준으로 개를 얻는 방법을 알지 못합니다. 어떻게해야합니까?
내 dog_addresses 테이블에 Lat 및 Long 열이있는 경우.
그래서 개 :
id | user_id | dog_name | age
dog_addresses :
id | dog_id | address_line_1 | town | postcode | lat | long
그래서 내 쿼리 내가 자란 ID가 1 인 모든 개를 얻을 필요하지만, 내가 할 수 있도록 내부가 동영상을 함께 내가 원하는 모든 비디오 정보와 주소 정보를 얻지 만, 위도와 경도를 기반으로 입력 한 우편 번호와 얼마나 가까운지에 따라 반환 된 개들의 순서를 정렬하고 싶습니다.
나는 매우 혼란 스럽다. 나는 이것을 찾았다 :
(3959 * acos(cos(radians(37)) * cos(radians(lat)) * cos(radians(lng) - radians(-122)) + sin(radians(37)) * sin(radians(lat)))) AS distance
그러나 나는 그것을 통합하는 방법이나 그것이 나를 위해 무엇을 사용하는지 아직도 모른다.
내 대답을 확인하십시오. 작동하는 경우 – jaysingkar