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. एक लिनक्स मशीन पर संग्रहीत एक MySQL डीबी में वास्तविक डेटा कहां है?

  2. उस कॉलम को खोजें जिसमें MySQL में दिया गया मान हो

  3. mysql मुद्रा के रूप में int का चयन करें या int को मुद्रा प्रारूप में कनवर्ट करें?

  4. पीएचपी पीडीओ MySQL स्क्रॉल करने योग्य कर्सर काम नहीं करता

  5. Mysql Group 24 घंटे के अंतराल तक