Я хотел бы принести некоторые события, заказанные с пронумерованными страницами по этим критериям:Doctrine2: пользовательский раздел OrderBy
- открытых событий менее чем на 20 км
- входящих событий в менее чем 20 км
- дополнительно открыл событие чем 20 км
- входящих события дальше, чем в 20 км
я могу иметь дело с открытым/входящим заказом, но я не в состоянии сократить < 20 км первым, вот что мой строитель запрос выглядит следующим образом:
public function fetchByLocation($day, $time, $latitude, $longitude, $page = 1, $itemPerPage = 10)
{
if(!$page) {
$page = 1;
}
$qb = $this->createQueryBuilder('event')
->select('event', 'GEO_DISTANCE(:latitude, :longitude, event.latitude, event.longitude) AS distance')
->setParameter('latitude', $latitude)
->setParameter('longitude', $longitude)
->where('(event.day = :day AND event.start >= :time) OR event.day > :day')
->setParameter('day', $day)
->setParameter('time', $time)
->addOrderBy('event.day', 'asc')
->addOrderBy('event.start', 'asc');
$qb->setFirstResult(($page - 1) * $itemPerPage)
->setMaxResults($itemPerPage);
return $qb->getQuery()->getResult();
}
Это обеспечит события с открытым первым, любой идеей, чтобы справиться с < 20ого критерием в построителе запросов? Должен ли я использовать собственный запрос? Могу ли я смешивать оба?
Большое спасибо за учитывая мою просьбу :)
Не знаю этот synthax, спасибо! Он работает, но не в моем случае. Поле «расстояние» вычисляется по предыдущему предложению select и не может использоваться для другого выбора :( Колонка не найдена: 1054 Неизвестный столбец «sclr6» в поле «0», –
, не видя, что вы добавили в свой код, я не могу помочь дальше –