[seasar-php:134] S2DaoのUpdateについて

ISHITOYA Kentaro [E-MAIL ADDRESS DELETED]
2007年 5月 19日 (土) 14:43:55 JST


石戸谷です。

連投申し訳ありません。
質問なのですが、N:1のリレーションを張ったプロパティの値を更新をするに
はどのようにすればいいのでしょうか。

descriptions: id(pk) description
person_types: id(pk) name
persons: id(pk) descriptons_id(fk) person_types_id(fk) nickname

というテーブルがあって、PersonsEntityからN:1のリレーションを張っている
とします。
テーブルには適当なデータが入っていて、

$person = $dao->getById(0);//適当なデータ
$person->getPersonTypeId->setId(2); //personのperson_types_idを2にしたい
$dao->update($person);

ではアップデートされなかったので、
$personType = new PersonTypesEntity();
$personType->setId(2);
$person->setPersonTypeId($personType);
$dao->update($person);

どちらも生成されるSQLは、
UPDATE persons SET nickname = 'administrator' WHERE id = 1
で、リレーションが張られているもののデータはSQLに含まれませんでした。

そこで、コードを見てみると、
S2Dao_DaoMetaDataImpl.class.php:350行目の、getPersistentPropertyNamesが、
返しているarraysの中にrelkeyが含まれておらず、処理的には、関数内の2つめ
のif文(378行目)です。
RelationPropertyの値をnamesに入れていないからかなとおもって、いれてみた
のですが、エラーで動きませんでした。

N:1のリレーションを張ったプロパティの値を更新するには、どうすればいいの
でしょうか。
ご教示いただければ幸いです。
以上よろしくお願いいたします。


seasar-php メーリングリストの案内