Yii Framework Forum: Active Record форматированны вывод - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Active Record форматированны вывод Rate Topic: -----

#1 User is offline   sergey.leonenko 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 62
  • Joined: 26-March 09

Posted 15 June 2009 - 02:04 PM

Интересует можно  ли  из модели получить такой же результат как
следующим  запросом  select id, to_char(stm,'HH24:MI') as stm from table1
(для  тех кто не  работает с базами PostgeSQL поясню  запись to_char(stm,'HH24:MI')  в  базе значение  08:05:00 после обработки отбрасываются  секунды и  получится  на  выводе 08:05)
другими словами  интересует как  в модели применить функцию к полю
или  только  возможно обрабатывать результирующий массив, например
$arr = M::model()->findAll();
foreach ($arr as $item)
{
  ..............
  echo substr($test[0]->stm,0,2).":".substr($test[0]->stm,3,2);

  ........
}

забыл сказать в  базе stm хранится в следующем виде hh:mm:ss (08:05:00)

Интересно кто что думает и  что оптимально на ваш взгляд, мне ближе  запрос.


0

#2 User is offline   Digital God 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 178
  • Joined: 30-January 09

Posted 15 June 2009 - 02:31 PM

Все просто, определяешь CDbCriteria
Например так:

$criteria=new CDbCriteria;
$criteria->select = "id, to_char(stm,'HH24:MI') as stm";
$criteria->condition='status='.Post::STATUS_PUBLISHED;
$criteria->order='createTime DESC';

и дальше подключаешь так

M::model()->findAll($criteria);

0

#3 User is offline   sergey.leonenko 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 62
  • Joined: 26-March 09

Posted 15 June 2009 - 02:53 PM

Quote

Все просто, определяешь CDbCriteria

Например так:


$criteria=new CDbCriteria;
$criteria->select = "id, to_char(stm,'HH24:MI') as stm";
$criteria->condition='status='.Post::STATUS_PUBLISHED;
$criteria->order='createTime DESC';


и дальше подключаешь так


M::model()->findAll($criteria);

спасибо!
0

#4 User is offline   Sergey Kuznetsov 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 93
  • Joined: 16-February 09
  • Location:Russia, Saratov

Posted 16 June 2009 - 02:18 AM

Но используя CDbCriteria в таком виде:
$criteria->select = "id, to_char(stm,'HH24:MI') as stm";

Мы не получим кроссплатформенности кода (т.е. запрос будет работать только при использовании PostgreSQL. Конечно, если мы знаем, что никогда этот код ни с чем другим работать не будет, то можно и так оставить.

Но, если сделать кроссплатформенный код, то может быть лучше так:

$arr = M::model()->findAll();
foreach ($arr as $item)
{
  [...]
  echo date("H:i", strtotime($item->stm));
  [...]
}

0

#5 User is offline   sergey.leonenko 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 62
  • Joined: 26-March 09

Posted 16 June 2009 - 11:40 AM

Quote

Но используя CDbCriteria в таком виде:

$criteria->select = "id, to_char(stm,'HH24:MI') as stm";


Мы не получим кроссплатформенности кода (т.е. запрос будет работать только при использовании PostgreSQL. Конечно, если мы знаем, что никогда этот код ни с чем другим работать не будет, то можно и так оставить.



Но, если сделать кроссплатформенный код, то может быть лучше так:


$arr = M::model()->findAll();
foreach ($arr as $item)
{
  [...]
  echo date("H:i", strtotime($item->stm));
  [...]
}


Спасибо за  помощь,  но речи быть не может в этой задаче  о кроссплатформенности, так как используется во всю процедурный  язык  PL/pgSQL
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users