Effectuez des recherches de rayon rapides et efficaces sur vos modèles Laravel Eloquent.
Laravel Geoly offre un moyen pratique pour vos modèles Laravel Eloquent d'interroger dans un certain rayon autour d'une position. Il est ultra-rapide en utilisant une boîte englobante pour réduire les résultats possibles et en calculant la distance uniquement sur le sous-ensemble restant. Laravel Geoly fonctionne à la fois sur MySQL et PostgreSQL.
Exigez simplement le projet via composer :
$ composer require akuechler/laravel-geoly
Geoly assume les deux colonnes latitude
et longitude
sur votre modèle éloquent. Ajoutez-les simplement à votre migration s’ils ne sont pas encore présents.
$ table -> double ( ' latitude ' );
$ table -> double ( ' longitude ' );
Si vous préférez utiliser d'autres noms pour les colonnes de votre base de données, spécifiez-les dans votre modèle.
const LATITUDE = ' lat ' ;
const LONGITUDE = ' lng ' ;
Utilisez le package Geoly dans votre modèle Eloquent.
class YourModel extends Model
{
use Geoly ;
...
}
Pour rechercher tous les modèles dans un rayon spécifique autour d'une position, ajoutez la portée radius
à votre requête.
$ query = YourModel :: radius ( $ latitude , $ longitude , $ radius );
$ query -> get ();
Ce projet est fortement inspiré de l'article de Laravel Geographical and Movable Type Scripts sur la sélection de points dans un cercle délimitant.