Execute pesquisas de raio rápidas e eficientes em seus modelos Laravel Eloquent.
O Laravel Geoly fornece uma maneira conveniente para seus modelos do Laravel Eloquent consultarem um determinado raio em torno de uma posição. É extremamente rápido usar uma caixa delimitadora para reduzir os resultados possíveis e calcular a distância apenas no subconjunto restante. Laravel Geoly funciona tanto em MySQL quanto em PostgreSQL.
Basta solicitar o projeto via compositor:
$ composer require akuechler/laravel-geoly
Geoly assume as duas colunas latitude
e longitude
em seu modelo eloquente. Basta adicioná-los à sua migração, se ainda não estiverem presentes.
$ table -> double ( ' latitude ' );
$ table -> double ( ' longitude ' );
Se você preferir usar outros nomes para as colunas do seu banco de dados, especifique-os no seu modelo.
const LATITUDE = ' lat ' ;
const LONGITUDE = ' lng ' ;
Use o pacote Geoly em seu modelo Eloquent.
class YourModel extends Model
{
use Geoly ;
...
}
Para pesquisar todos os modelos dentro de um raio específico em torno de uma posição, adicione o escopo radius
à sua consulta.
$ query = YourModel :: radius ( $ latitude , $ longitude , $ radius );
$ query -> get ();
Este projeto é fortemente inspirado no artigo Laravel Geographical and Movable Type Scripts sobre Seleção de pontos dentro de um círculo delimitador.