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で外部キーつける権限がない時に使えるくらいの認識だったんですが、都合がいい部分だけ外部キー制約つけれるかもってことで、これは使えるんじゃないかと思います。

コメント 停止中

%d人のブロガーが「いいね」をつけました。