Не пойму как заставить модель возвращать преобразованное поле:
date_part( ‘epoch’,“timestamp”(date) ) as unix_datetime
БД postgres 8.4
Модель
keyExists( $key ){
$this->getDbCriteria()->mergeWith(array(
'select' => "key, date, date_part( 'epoch', \"timestamp\"(date) ) as unix_datetime",
'condition' => "key = '$key'",
));
return $this;
}
Контроллер
$keyInfo = Key::model()->keyExists( $key )->find();
В трейсе запрос выполняется как нужно
SELECT key, date, date_part( 'epoch',
"timestamp"(date) ) as unix_datetime FROM "keys"
WHERE $key = '7izyp' LIMIT 1
но $keyInfo в нет поля unix_datetime, как я понимаю выводятся только те поля которые есть в структуре таблицы.
Подскажите каким образом можно получать поля полученные в результате SQL функций?
raa
(Rudenkosasha)
2
я не знаком с постгресом, но думаю должно работать как-то так:
в модели пропишите
public $unix_datetime;
по крайней мере у меня Yii ругается на такие поля, а это решение помогает.
потом просто обращаетесь к полю как-то так
$keyInfo = Key::model()->keyExists( $key )->find();
echo $keyInfo->unix_datetime;
Rsol
(Slava Rudnev)
3
Думаю, должно так работать.
Я когда-то делал финт ушами - вместо unix_datetime использовал поле такого же типа, реально существующее в таблице.Криво - но работает.