今日Zend_Db_Tableのリファレンスガイドを見ていたら以下のような記述がありました。
取得操作用のAPIは変更され、Zend\_Db\_Table\_Selectオブジェクトで
クエリを変更できるようになりました。
しかし、昔ながらの方法であるfetchRow()やfetchAll()は今でも同じよ
うに使用することができます。
次の文は、どれも正しくて同じ動作をします。しかし、新しい使用法に対応
するためにもできるだけ新しい書き方に変更することをお勧めします。
// 行セットを取得します
$rows = $table->fetchAll('bug\_status = "NEW"', 'bug\_id ASC', 10, 0);
$rows = $table->fetchAll($table->select()->where('bug\_status = ?', 'NEW')
->order('bug\_id ASC')
->limit(10, 0));
// 単一の行を取得します
$row = $table->fetchRow('bug\_status = "NEW"', 'bug\_id ASC');
$row = $table->fetchRow($table->select()->where('bug\_status = ?', 'NEW')
->order('bug\_id ASC'));
1.0.3でこんな書き方(下のほうの例)できるのかなと調べたのですが、どうも無理そうです。 1.5RC1版をダウンロードしたところ、Zend/Db/Table/以下にSelect.phpというファイルがありました(Zend_Db_Table_Selectクラス)。 Zend_Db_Table_Selectクラスはよく見ていませんが、Zend_Db_Selectクラスを拡張したものです。 Zend_Db_Table_Abstractクラスのselect()メソッドでZend_Db_Table_Selectクラスのオブジェクトを取得でき、上記のような記述ができるようです(単に関数内で、newしてました)。
public function select()
{
require\_once 'Zend/Db/Table/Select.php';
return new Zend\_Db\_Table\_Select($this);
}
リファレンスマニュアルとその翻訳も1.5版に向けて徐々に加筆・修正がなされているようです。 本日、1.0.4のリリースと1.5RC1が利用可能であると、メーリングリストからお知らせが来ました。 1.0.4のリリースについては、以下のように書いてありました。
With this mini-release we bid a fond farewell to the 1.0 branch as we
move on to the 1.5 release.
1.0系と(やさしく)お別れするためのリリースのようです。 今後はblogで扱うバージョンも1.5の内容にしようと思います。