ทำการค้นหารัศมีอย่างรวดเร็วและมีประสิทธิภาพในโมเดล Laravel Eloquent ของคุณ
Laravel Geoly มอบวิธีที่สะดวกสำหรับโมเดล Laravel Eloquent ของคุณในการสืบค้นในรัศมีที่กำหนดรอบตำแหน่ง มันเร็วปานสายฟ้าโดยใช้ Bounding Box เพื่อลดผลลัพธ์ที่เป็นไปได้และคำนวณระยะทางบนเซตย่อยที่เหลือเท่านั้น Laravel Geoly ทำงานได้ทั้งบน MySQL และ PostgreSQL
เพียงต้องการโปรเจ็กต์ผ่านผู้แต่ง:
$ composer require akuechler/laravel-geoly
Geoly ถือว่าสองคอลัมน์ latitude
และ longitude
ในแบบจำลองฝีปากของคุณ เพียงเพิ่มพวกเขาลงในการโยกย้ายของคุณหากยังไม่มี
$ table -> double ( ' latitude ' );
$ table -> double ( ' longitude ' );
หากคุณต้องการใช้ชื่ออื่นสำหรับคอลัมน์ฐานข้อมูลของคุณ ให้ระบุในโมเดลของคุณ
const LATITUDE = ' lat ' ;
const LONGITUDE = ' lng ' ;
ใช้แพ็คเกจ Geoly ภายในโมเดล Eloquent ของคุณ
class YourModel extends Model
{
use Geoly ;
...
}
หากต้องการค้นหาโมเดลทั้งหมดภายในรัศมีเฉพาะรอบตำแหน่ง ให้เพิ่มขอบเขต radius
ในการสืบค้นของคุณ
$ query = YourModel :: radius ( $ latitude , $ longitude , $ radius );
$ query -> get ();
โปรเจ็กต์นี้ได้รับแรงบันดาลใจอย่างมากจากบทความสคริปต์ Laravel Geographical and Movable Type เกี่ยวกับการเลือกจุดภายในวงกลมขอบเขต