Zend_Db_Table_Rowsetを拡張する
Zend_Db_Table_Rowsetのデータを削除したり、一括で更新したりするのに
foreach使っていたんですが、めんどうだなーと思って、拡張を考えました。
http://framework.zend.com/manual/ja/zend.db.table.rowset.html#zend.db.table.rowset.extending
上記を参考にして、以下のクラスを追加
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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で外部キーつける権限がない時に使えるくらいの認識だったんですが、都合がいい部分だけ外部キー制約つけれるかもってことで、これは使えるんじゃないかと思います。
コメント 0