Doktrini Haversine kullanarak SQL arama

1 Cevap php

Ben yani ben bu gibi çalışır bir işlevi olmasını istiyorsanız, koordinatlara göre arama yapmak istiyorum:

function getLocationsInCircle($lat, $long, $minDist, $maxDist){
    //return all the places that are at least $minDist 
    //kilometers away and no more than $maxDist kilometers away
}

Ben tüm konum kimlikleri ve enlem ve boylam saklayan bir "konum" tablo var.

Haversinüs formülü ben yapmak istediğim için yeterince iyi

6371 * ACOS(SIN(RADIANS( $lat )) * SIN(RADIANS( latitude )) + COS(RADIANS( $lat )) * COS(RADIANS( latitude )) * COS(RADIANS( longitude ) - RADIANS( $long )))

Ben sadece Doktrini bu sorguyu çalıştırmak için nasıl görmüyorum.

1 Cevap

Bu deneyin:

Doctrine_query::create()->select('id')
    ->addSelect("(6371 * ACOS(SIN(RADIANS($latitude)) * SIN(RADIANS(l.latitude)) + COS(RADIANS($latitude)) * COS(RADIANS(l.latitude)) * COS(RADIANS(l.longitude) - RADIANS($longitude)))) as Distance")
    ->from('Location l')
    ->having("Distance > $minDist AND Distance < $maxDist");