zend框架自动改变查询

时间:2012-04-04 20:48:00

标签: mysql database zend-framework

我的数据库(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

1 个答案:

答案 0 :(得分:2)

您应该能够使用$ select-> from()对象在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);

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