Как стать автором
Поиск
Написать публикацию
Обновить

CakePHP и хитрая pagination

Время на прочтение1 мин
Количество просмотров800
У меня в CakePHP самое больное место — pagination. Особенно когда дело касается хитростей. Банальный ->find('all') работает всегда (ну почти всегда) хорошо и замечательно, а вот pagination…
Дано:

  1. Есть табличка объектов недвижимости (Immovable) с указанной ценой (Immovable.price) и типом валюты (Immovable.currency_id)
  2. Есть табличка валюты (Currency) с полями: id, name, coeff (коэффициент)

Соответственно в таблице валюты есть коэффициенты USD coeff = 1, для валюты Euro coeff=1.34.
Задача:

Сортировать выдачу (paginate) по цене, с учётом валюты. Т.е. дом за 100 000 евро дороже, чем дом за 110 000 долларов (при курсе 1 к 1.34)
Решение

$this->paginate = array('order' => array('Count' => 'ASC'),
'fields' => array('*','((`Immovable`.`price`*`Currency`.`coeff`)) as Count'));


Да, именно в двойных скобках. Тогда запрос будет правильным с положенным LEFT JOIN к Currency и правильной сортировкой по вычисляемому полю.

Да, тестировал с MySQL, ибо с другими базами работать не довелось. Надеюсь кому-нить это поможет :)
Теги:
Хабы:
Всего голосов 9: ↑5 и ↓4+1
Комментарии4

Публикации

Ближайшие события