Mysql
 sql >> база данни >  >> RDS >> Mysql

Хаверсин и Ларавел

Така че нямате нужда от цялото раздуване, което е в тази същност, вместо това можете да използвате следните формули:

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;
}

Това предполага, че предавате latitude и longitude от вашия потребител. Освен това, ако не искате радиусът да е 1, можете да предадете третия аргумент и да предоставите персонализиран радиус.

И разбира се, приемаме, че това е за модел на Offer . Променете конвенцията за именуване, където е необходимо.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да комбинирам резултатите от две заявки с поръчка?

  2. Обратно инженерство на mysql база данни за създаване на приложение django

  3. Чувствителни ли са имената на колона и таблица в MySQL?

  4. Създайте уебсайт с MySQL

  5. MySQL Показване на състоянието на таблицата, автоматичното увеличение не е правилно