Я часами пытаюсь сделать запрос с помощью Doctrine для чтения данных о местоположении (объект местоположения) на основе расстояния, но, в свою очередь, значение местоположения (объект местоположения) повторяется только один раз для соответствующего пользователя (объект шофера).
Моя сущность Местоположение:
- id
- шофер (от ManyToOne до шофера)
- широта
- долгота
- точность
- высота
- ....
Моя сущность Шофер:
- id
- имя
- Эл. адрес
- ....
Мой текущий код:
$Locations = $entityManager
->getRepository("MYBUNDLE:Location")
->createQueryBuilder('s')
->leftJoin("s.chauffeur", "chauffeur")
->select('s')
->addSelect(
'( 3959 * acos(cos(radians(' . $location_lat . '))' .
'* cos( radians( s.latitude ) )' .
'* cos( radians( s.longitude )' .
'- radians(' . $location_lng . ') )' .
'+ sin( radians(' . $location_lat . ') )' .
'* sin( radians( s.latitude ) ) ) ) as distance'
)
->having('distance < :distance')
->setParameter('distance', 10)
->orderBy('distance', 'ASC')
// up to this line it works fine
//->select('s.chauffeur,count(s.1) as cnt') //
//->groupBy('s.chauffeur') // Filter to see only one Location per Chauffeur
//->having('s.count(1) > 1'); //
Мой результат выбора:
Первый результат:
- id: 1
- шофер: 10 (id)
- широта: -34,894336
- долгота: -56.152603
- точность: 20,0
- высота: 20
Второй результат:
- id: 2
- шофер: 15 (удостоверение личности)
- широта: -34,917782
- долгота: -56.164569
- точность: 20,0
- высота: 20
Третий результат:
- id: 3
- шофер: 10 (id)
- широта: -34.902652
- долгота: -56.147251
- точность: 20,0
- высота: 20
...
Что должно произойти, так это то, что местоположение с идентификатором 3 опущено, поскольку существует другое местоположение (идентификатор 1) для того же пользователя (объект шофера).
Я ценю вашу помощь, Приветствую,
ID1 < ID3
? - person Juan Carlos Oropeza   schedule 02.11.2015