तो आपको उस सार में सभी ब्लोट की आवश्यकता नहीं है, इसके बजाय, आप निम्न सूत्रों का उपयोग कर सकते हैं:
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
. के मॉडल के लिए है . जहां आवश्यक हो, अपना नामकरण परंपरा बदलें।