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 に答える