1対多の関係でテーブルにproduct
リンクされているテーブルがあります。同じテーブルで、i18nの動作もあります。これは、同じタイプの関係を持つ1対多の別のテーブルproduct_i18nを意味します。PropelORMPlugin(Propel 1.6)を使用しています。デフォルトでは、ファイルに次のメソッドが生成されます。product_image
doSave
BaseProduct.php
protected function doSave(PropelPDO $con)
{
$affectedRows = 0; // initialize var to track total num of affected rows
if (!$this->alreadyInSave) {
$this->alreadyInSave = true;
// We call the save method on the following object(s) if they
// were passed to this object by their coresponding set
// method. This object relates to these object(s) by a
// foreign key reference.
if ($this->aCategory !== null) {
if ($this->aCategory->isModified() || $this->aCategory->isNew()) {
$affectedRows += $this->aCategory->save($con);
}
$this->setCategory($this->aCategory);
}
if ($this->isNew() || $this->isModified()) {
// persist changes
if ($this->isNew()) {
$this->doInsert($con);
} else {
$this->doUpdate($con);
}
$affectedRows += 1;
$this->resetModified();
}
if ($this->productImagesScheduledForDeletion !== null) {
if (!$this->productImagesScheduledForDeletion->isEmpty()) {
ProductImageQuery::create()
->filterByPrimaryKeys($this->productImagesScheduledForDeletion->getPrimaryKeys(false))
->delete($con);
$this->productImagesScheduledForDeletion = null;
}
}
if ($this->collProductImages !== null) {
foreach ($this->collProductImages as $referrerFK) {
if (!$referrerFK->isDeleted()) {
$affectedRows += $referrerFK->save($con);
}
}
}
if ($this->productI18nsScheduledForDeletion !== null) {
if (!$this->productI18nsScheduledForDeletion->isEmpty()) {
ProductI18nQuery::create()
->filterByPrimaryKeys($this->productI18nsScheduledForDeletion->getPrimaryKeys(false))
->delete($con);
$this->productI18nsScheduledForDeletion = null;
}
}
if ($this->collProductI18ns !== null) {
foreach ($this->collProductI18ns as $referrerFK) {
if (!$referrerFK->isDeleted()) {
$affectedRows += $referrerFK->save($con);
}
}
}
$this->alreadyInSave = false;
}
return $affectedRows;
}
オブジェクトテーブルに保存するとき(を保存するとき)ProductI18n
にオブジェクトのプロパティにアクセスする必要があります。問題は、オブジェクトがオブジェクトの後に保存されることです。が新しい場合、プロパティが空であることを意味します(他のいくつかのプロパティに基づいてオブジェクトを保存するときに、そのプロパティが入力されるため)。Propelが関連オブジェクトの保存順序を生成する方法を変更する方法はありますか?メソッドを書き直さずにこれを機能させる他の方法はありますか?ProductImage
Product
ProductI18n
ProductImage
Product
ProductI18n
doSave