Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
Watched Topics
FAQ
Поиск
Пользователи
Группы
Регистрация
Профиль
Войти и проверить личные сообщения
Вход
Список форумов Cake-PHP.ru
->
Общий
Ответить
Имя
Тема
Сообщение
Смайлики
Дополнительные смайлики
Цвет шрифта:
По умолчанию
Тёмно-красный
Красный
Оранжевый
Коричневый
Жёлтый
Зелёный
Оливковый
Голубой
Синий
Тёмно-синий
Индиго
Фиолетовый
Белый
Чёрный
Размер шрифта:
Размер шрифта
Очень маленький
Маленький
Обычный
Большой
Огромный
Закрыть теги
Настройки
HTML
ВЫКЛЮЧЕН
BBCode
ВКЛЮЧЕН
Смайлики
ВКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Отключить в этом сообщении смайлики
Если у вас плохое зрение или вы не можете прочесть этот код по какой-то другой причине, то обратитесь за помощью к
Администратору
.
Код подтверждения: *
Введите код в точности так, как вы его видите. Код является регистро-зависимым, а символ нуля имеет косую линию внутри цифры.
Часовой пояс: GMT + 3
Перейти:
Выберите форум
CakePHP Форум
----------------
Общий
Установка и настройка
Творчество
Вопросы и пожелания
Комментарии к главам руководства по CakePHP 1.1
Обзор темы
Автор
Сообщение
Vlad
Добавлено: 22 Апр 2009 14:25:27
Заголовок сообщения:
Заодно переопределил paginate
Код:
function paginate($object = null, $scope = array(), $whitelist = array()) {
if ($this->params['named']['sort'] == 'price') {
if (!isset($this->paginate['fields'])) $this->paginate['fields'][] = '*';
$this->paginate['fields'][] = '((`Immovable`.`price`*`Currency`.`coeff`)) as Count';
$this->paginate['order'] = array('Count' => $this->params['named']['direction']);
$whitelist = array('sort','direction','page');
}
return parent::paginate($object, $scope, $whitelist);
}
Единственное что неработает - при тыканьи на колонку price - не переключается direction:Asc/Desc
всё время - asc
Если убрать определение $whitelist - тогда направление сортировки переключается, но тогда не работает сортировка по вычисляемому полю.
Пока дальше не разобрал - решил просто добавить две ссылочки сортировка+, сортировка-.
А код постчу - может кому полезно будет.
Vlad
Добавлено: 22 Апр 2009 11:27:26
Заголовок сообщения:
evilbloodydemon
Спасибо за пинок в нужном направлении
'fields' => array('*','((`Immovable`.`price`*`Currency`.`coeff`)) as Count'),
вот какой формат записи полей (с одной скобкой, не будет работать)
nws
Добавлено: 22 Апр 2009 10:25:20
Заголовок сообщения:
Имхо 2 варианта:
1. Хранить price в сессии
$conditions = array('price'=>$price);
$this->paginate('all', $conditions);
2. $this->Model->query();
evilbloodydemon
Добавлено: 22 Апр 2009 07:18:35
Заголовок сообщения:
как по мне, так лучше сделать в таблице с валютами некий коэффициент (курс валюты), джойнить основную таблицу с валютной и в вычисляемом поле домножать цену на курс.
а этот код оставь для инопланетян и их союзников.
Vlad
Добавлено: 21 Апр 2009 22:58:03
Заголовок сообщения: Хитрый paginate
Как бы мне ввернуть в paginate хитрый квери?
задача состоит в том, что в таблице цена может указываться в разных валютах - доллары, евро
Голым MySQL это можно сделать так:
SELECT id, price, currency_id, title,
CASE currency_id
WHEN 1
THEN price
WHEN 2
THEN price * 1.34
END AS cost_usd
FROM dec_immovables
WHERE 1
ORDER BY cost_usd DESC
LIMIT 0 , 30
Стоит ли говорить, что конструкция:
$this->paginate = array('limit' => 10,array('fields' => array('id','title','price','currency_id','country_id',"CASE currency_id WHEN 1 THEN price WHEN 2 THEN price * 1.34 END AS cost_usd"),'order' => array('cost_usd' => 'DESC')));
не работает.
Как это сделать красиво?
Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB
Если ничего интересного не нашли, можно рекламу почитать, а рекламируется у нас сегодня «».