Zend_Db_Table_Rowsetのデータを削除したり、一括で更新したりするのに
foreach使っていたんですが、めんどうだなーと思って、拡張を考えました。
http://framework.zend.com/manual/ja/zend.db.table.rowset.html#zend.db.table.rowset.extending
上記を参考にして、以下のクラスを追加
class MyRowset extends Zend_Db_Table_Rowset_Abstract
{
public function delete()
{
if (!$this->valid()) { return; }
foreach ($this as $row) { $row->delete(); }
}
public function save()
{
if (!$this->valid()) { return; }
foreach ($this as $row) { $row->save(); }
}
public function __set($key, $value)
{
if (!$this->valid()) { return; }
foreach ($this as $row) { $row->{$key} = $value; }
}
}
まだ動かしてないので、うまくいくかわからないけれど、メモとして残します。
あと、書き込み操作連鎖も初めて使ってます。
http://framework.zend.com/manual/ja/zend.db.table.relationships.html#zend.db.table.relationships.cascading
DBはMySQLで、外部キー制約を付けようと考えたのですが、対象テーブルにないキーが入ってしまうことがあるので、つけることができずに、上記の機能を利用することを考えました。
今までは、MySQLで外部キーつける権限がない時に使えるくらいの認識だったんですが、都合がいい部分だけ外部キー制約つけれるかもってことで、これは使えるんじゃないかと思います。