次のdoctrine2クエリがうまく機能しています。地理的な半径内のすべての「マーカー」を取得します。
$qb->select('marker')
->from('SndSpecialistLocator\Entity\Marker', 'marker')
->where('DISTANCE(marker.location, POINT_STR(:point)) < :distance')
->setParameter('point', $point)
->setParameter('distance', $radius);
次に、それらを距離順に並べ替えます。
$qb->select('marker (DISTANCE(marker.location, POINT_STR(:point))) AS distance')
->from('SndSpecialistLocator\Entity\Marker', 'marker')
->where('DISTANCE(marker.location, POINT_STR(:point)) < :distance')
->setParameter('point', $point)
->orderBy('distance', 'DESC')
->setParameter('distance', $radius);
しかし、残念ながらこれは機能しません。距離はエンティティの実際のプロパティではなく、計算されたプロパティであるため、これは可能でしょうか?
ここでのトリックは何ですか?