0

我的数据库 (mysql) 表使用 TIMESTAMP 列,每当我希望它们在查询中返回时,我希望它们被查询为“UNIX_TIMESTAMP(columnname)”。

您如何轻松地修改 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

4

1 回答 1

2

您应该能够使用 $select->from() 对象在选择中指定所需的字段。

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);

如果要运行函数中没有括号的表达式,请使用 Zend_Db_Expr() 方法正确转义查询。

于 2012-04-04T21:27:49.240 回答