これは私にとっては非常に複雑なものです。郵便番号で緯度と経度に最も近い郵便番号を検索することができないことを除いて、私は非常にうまくいく検索方法です。つまり、私は緯度と経度を調べることができますが、私はそれを既存のクエリに統合する方法がわかりません。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テーブルにあるlatおよびlongカラムに基づいて、場所によって犬を取得する方法はわかりません。これはどうすればいいですか?
私の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