2012-04-04 4 views
0

В таблицах моей базы данных (mysql) используются столбцы TIMESTAMP, и всякий раз, когда я хочу, чтобы они возвращались в запрос, я хочу, чтобы они были запрошены как «UNIX_TIMESTAMP (имя столбца)».zend framework автоматически меняет запросы

Как легко изменить запросы в рамках zend для достижения этой цели?

Например, текущий код:

select = $this->select(); 
$select->where('user_id = ?',$user_id); 
return $this->fetchAll($select); 

В конечном итоге это становится:

select * from tablename where user_id = 42; 

Я хочу кое-что автоматически находит столбец TIMESTAMP и изменяет результирующий запрос:

select user_id,name,unix_timestamp(created) where user_id = 42; 

Я знаю, что я могу использовать представление MySQL для достижения этого, но я бы предпочел избежать этого т.

Спасибо.

RR

ответ

2

Вы должны быть в состоянии указать поля, которые вы хотите в выберите с помощью объекта $ select-> из().

Zend_Db_Select

Вы должны закончить с чем-то вроде этого.

$select = $this->select(); 

$select->from(
    array('t' => 'tablename'), 
    array('user_id', 'name', 'UNIX_TIMESTAMP(created)') 
); 

$select->where('user_id = ?',$user_id); 
return $this->fetchAll($select); 

Если вы хотите запустить выражение, которое не имеет Parenthese в функции, используйте метод Zend_Db_Expr(), чтобы избежать запроса должным образом.

+0

Спасибо за ваш ответ. Да, это очевидно. То, что я ищу, - это способ сделать это без указания всех столбцов. Я хочу, чтобы общее решение, которое не требует, чтобы я поддерживал список столбцов в PHP-коде для каждой таблицы с меткой времени. – russellr

+0

Ahhh. Извините, я не понял. Я бы рекомендовал посмотреть на что-то вроде Doctrine2. Это отобразит ваши классы PHP в MySQL с помощью аннотаций. Он будет генерировать правильные запросы в зависимости от того, как вы аннотировали поле. Doctrine2 ORM поддерживает сопоставление между типом TIMESTAMP MySQL и PHP DateTime автоматически. Это, вероятно, слишком велико, потому что вы хотите этого, но это облегчает жизнь, когда вы получите это. http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/basic-mapping.html –

Смежные вопросы