PHP で Phalcon を使用して vcard クラスを作成しました。vCard モデルは次のように初期化されます。
// Inside the BS_VCard class
public function initialize(){
$this->hasMany("id","BS_VCardElement","vCardId",array(
"alias" => "elements",
'foreignKey' => array(
'action' => Phalcon\Mvc\Model\Relation::ACTION_CASCADE
)
));
}
その要素はこのように初期化されます
// Inside the BS_VCardElement class
public function initialize(){
$this->belongsTo("vCardId","BS_VCard","id",array("alias" => "vCard"));
...
}
ユーザーが vCard を読み取って別の要素を追加すると、期待どおりに機能しません。使用を簡素化するために、このようないくつかの fascade メソッドを追加しました
public function addDateOfBirth($date){
$element = new BS_VCardElement();
$element->setName("BDAY");
$element->addValue($date);
// This doesn't work
$this->elements[] = $element;
}
Docs/Storing 関連レコードは、このような新しいデータを関連テーブルに追加する方法を説明していません。
私もこれを試しました
$this->elements[] = array_merge($this->elements,array($element));
しかし、save メソッドは追加された要素を無視しているようです。Save() は true を返します。