以前、Zend_Db_Table_Rowsetを拡張するという記事をあげましたが、
不備というか使いづらい点があったので修正しました。
deleteト等を行う前に、foreach や、更新を行っていると、
rowset内カウンタの関係で、 validでfalseが返ってきたので、
処理の前後に、rewindでカウンタを0に戻す処理を追加しました。
class MyRowset extends Zend_Db_Table_Rowset_Abstract
{
public function delete()
{
$this->rewind();
if (!$this->valid()) { return; }
foreach ($this as &$row) { $row->delete(); }
}
public function save()
{
$this->rewind();
if (!$this->valid()) { return; }
foreach ($this as &$row) { $row->save(); }
$this->rewind();
}
public function __set($key, $value)
{
$this->rewind();
if (!$this->valid()) { return; }
foreach ($this as &$row) { $row->{$key} = $value; }
$this->rewind();
}
}