2009年7月16日木曜日

Zend_Db_SelectでWhere句を取得

どうも俺@残業中です。
引き続きZendFrameworkでアプリ開発を行っております。

Zend_Db_SelectというSQL文を自動生成してくれるクラスが用意されているのですが、
まぁSQLくらい直接書けよ。というツッコミは置いておいて、どうせなら用意されているクラスを利用したい+オブジェクティブに作りたいという事で使ってみました。
<?php $select = $myTable->select();
という感じで、Zend_Db_Selectオブジェトの生成はとても楽です。
ちなみに$myTableというのはZend_Db_Tableクラスを継承したクラスです。

Where句を作成するには
<?php $select->where("id = ?", $id);
のようにすると
WHERE id = $id 
というWhere句が作られます。

OrderBy句は
<?php $select->order("id DESC");
ORDER BY id DESC 
ができます。
超便利ですね。

あとはもう
<?php $select->query();
でZend_Db_Statementオブジェクトを取得しても良し
<?php $myTable->fetchAll($select);
でZend_Db_Rowsetオブジェクトを取得しても良し
<?php $dbAdapter->query($select->__toString());
でZend_Db_Statementオブジェクトを取得しても良し
<?php $dbAdapter->fetchAll($select);
などなど
使い道は無数にありますので、お好きなようにどうぞ。


で、このZend_Db_Selectを使って
「Where句だけ取りたい」
「OrderBy句だけ取りたい」
などあると思います。

その時は
<?php $select->getPart(Zend_Db_Select::WHERE);
でWhere句取得。
<?php $select->getPart(Zend_Db_Select::ORDER);
でOrderBy句取得。
などできちゃいます。
詳しくは、ZendFramework::Select オブジェクトの一部の取得で。


以上どぇーす。

0 件のコメント: