2010年1月29日金曜日

Zend_Db_Table(その4) 検索その1

テーブルからデータ取得をするために3つのメソッドが用意されている

find() :主キーを利用して検索
fetchRow() :条件を指定して一行だけ検索
fetchAll() :条件を指定して複数行検索

fetchRow()以外はZend_Db_Table_Rowsetで取得できる。
fetchRow()は条件にマッチしたら、Zend_Db_Table_Row、マッチなかったらnullが取得できる。

--------コード例--------
$table=new Hoge();
//主キーを利用した検索
$rows=$table->find($key);
//条件を指定して検索(一行だけ)
$row=$table->fetchRow($table->select()->where("col=?",$value);
//条件を指定して検索(複数行)
$rows=$table->fetchAll($table->select()->where("col=?",$value);
-------ここまで-------


foreach文で、Zend_Db_Table_Rowを取得できる。
--------コード例--------
$table=new Hoge();
$rows=$table->fetchAll($table->select()->where("col=?",$value);
foreach($rows as $row){
 $row->name;
$row->id;
}
-------ここまで-------
Zend_Db_Table_Rowsetでは、count()メソッドで件数を取得できる。



配列で取得したいなら、toArray()メソッドを使えば、列を連想配列に変換したものの配列を取得できる

--------コード例--------
$table=new Hoge();
$rows=$table->fetchAll($table->select()->where("col=?",$value);

$data_array=$rows->toArray();
foreach($data_array as $key=>$value){
echo "キー=".$key."\n";
echo "値=".$value."\n";
}
-------ここまで-------

current()メソッドを使うと最初の行だけ取得できる。
find()を利用する場合はRowsetが必ずで返るので、以下のようにして、Rowを取得する。
Rowsetが0件の場合、current()の戻り値はnullになる。
--------コード例--------
$table=new Hoge();
$rows=$table->find($key);
$data=$rows->current();
-------ここまで-------

0 件のコメント: