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の情報を更新する前に。ここ大事です。