我的数据库(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
答案 0 :(得分:2)
您应该能够使用$ select-> from()对象在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()方法正确转义查询。