findManyToManyRowsetの盲点

findManyToManyRowset はとても便利なメソッドです。


以下の様なテーブル構成の場合


・テーブルA

・テーブルB (テーブルAの子テーブル)

・テーブルC (テーブルBの子テーブル)


findテーブルCViaテーブルB

または

findManyToManyRowset(‘テーブルC’ , ‘テーブルB’)

と書くことで、Cの情報を1行で取得することができます。


以前の記事でこの場合、テーブルBのデータも参照のみ可能な状態で、

Zend_Db_Table_Rowsetクラスに含まれていることを書きました。

しかし、テーブルCのデータを更新して、save()した後、テーブルBのデータは、オブジェクトの中から消えてしまいます。

もともとテーブルCのRowsetオブジェクトなので、理解できるのですが、

予想していない挙動だったので、ここにメモしておきます。


参照するなら、テーブルCの情報を更新する前に。ここ大事です。