[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 メーリングリストの案内