Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Haversine dan Laravel

Jadi Anda tidak perlu semua mengasapi yang ada di inti itu, Anda bisa menggunakan rumus berikut:

public function get_offers_near($latitude, $longitude, $radius = 1){

    $offers = Offer::select('offers.*')
        ->selectRaw('( 3959 * acos( cos( radians(?) ) *
                           cos( radians( offer_lat ) )
                           * cos( radians( offer_long ) - radians(?)
                           ) + sin( radians(?) ) *
                           sin( radians( offer_lat ) ) )
                         ) AS distance', [$latitude, $longitude, $latitude])
        ->havingRaw("distance < ?", [$radius])
        ->get();

    return $offers;
}

Ini mengasumsikan bahwa Anda melewati latitude dan longitude dari pengguna Anda. Selain itu, jika Anda tidak ingin radius menjadi 1, Anda dapat meneruskan argumen ke-3 dan memberikan radius khusus.

Dan tentu saja, kami berasumsi bahwa ini untuk model Offer . Ubah konvensi penamaan Anda jika diperlukan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ImportError:Tidak ada modul bernama flask.ext.mysql

  2. MySQL Query untuk memilih data dari minggu lalu?

  3. Buat Metode Pengiriman Kustom di OpenCart:Bagian Kedua

  4. Cara Menghapus Pengguna Database MySQL di cPanel

  5. bagaimana cara menjatuhkan partisi tanpa menjatuhkan data di MySQL?