Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

Laravel . में दो बिंदुओं के बीच हावर्सिन दूरी की गणना

यह मेरा कार्यान्वयन था। मैंने समय से पहले अपनी क्वेरी को अन्य नाम देना चुना है, इस तरह मैं Pagination का लाभ उठा सकता हूं . इसके अलावा, आपको उन स्तंभों का स्पष्ट रूप से चयन करना होगा जिन्हें आप क्वेरी से पुनर्प्राप्त करना चाहते हैं। उन्हें ->select() . पर जोड़ें . जैसे users.latitude, users.longitude, products.name , या जो कुछ भी हो सकता है।

मैंने एक स्कोप बनाया है जो कुछ इस तरह दिखता है:

public function scopeIsWithinMaxDistance($query, $location, $radius = 25) {

     $haversine = "(6371 * acos(cos(radians($location->latitude)) 
                     * cos(radians(model.latitude)) 
                     * cos(radians(model.longitude) 
                     - radians($location->longitude)) 
                     + sin(radians($location->latitude)) 
                     * sin(radians(model.latitude))))";
     return $query
        ->select() //pick the columns you want here.
        ->selectRaw("{$haversine} AS distance")
        ->whereRaw("{$haversine} < ?", [$radius]);
}

आप इस दायरे को latitude . वाले किसी भी मॉडल पर लागू कर सकते हैं औरlongitude

$location->latitude को बदलें अपने latitude . के साथ जिसके खिलाफ आप खोजना चाहते हैं, और $location->longitude . को प्रतिस्थापित करना चाहते हैं उस देशांतर के साथ जिसे आप खोजना चाहते हैं।

model.latitude को बदलें और model.longitude उन मॉडलों के साथ जिन्हें आप $location . के आसपास खोजना चाहते हैं $radius . में परिभाषित दूरी के आधार पर ।

मुझे पता है कि आपके पास एक काम करने वाला हैवरसाइन फॉर्मूला है, लेकिन अगर आपको पेजिनेट करने की आवश्यकता है तो आप अपने द्वारा दिए गए कोड का उपयोग नहीं कर सकते।

उम्मीद है कि यह मदद करता है।



  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. मैसकल को विशिष्ट तालिका की अंतिम आईडी मिलती है

  3. यह निर्धारित करने का सबसे सस्ता तरीका है कि क्या MySQL कनेक्शन अभी भी जीवित है

  4. MySQL में डेटाटाइम फ़ील्ड में NULL मान कैसे स्टोर करें?

  5. MySQL my.ini स्थान