コード例 #1
0
ファイル: Category.php プロジェクト: alex63530/thelia
 /**
  * Performs the work of inserting or updating the row in the database.
  *
  * If the object is new, it inserts it; otherwise an update is performed.
  * All related objects are also updated in this method.
  *
  * @param      ConnectionInterface $con
  * @return int             The number of rows affected by this insert/update and any referring fk objects' save() operations.
  * @throws PropelException
  * @see save()
  */
 protected function doSave(ConnectionInterface $con)
 {
     $affectedRows = 0;
     // initialize var to track total num of affected rows
     if (!$this->alreadyInSave) {
         $this->alreadyInSave = true;
         if ($this->isNew() || $this->isModified()) {
             // persist changes
             if ($this->isNew()) {
                 $this->doInsert($con);
             } else {
                 $this->doUpdate($con);
             }
             $affectedRows += 1;
             $this->resetModified();
         }
         if ($this->productsScheduledForDeletion !== null) {
             if (!$this->productsScheduledForDeletion->isEmpty()) {
                 $pks = array();
                 $pk = $this->getPrimaryKey();
                 foreach ($this->productsScheduledForDeletion->getPrimaryKeys(false) as $remotePk) {
                     $pks[] = array($remotePk, $pk);
                 }
                 ProductCategoryQuery::create()->filterByPrimaryKeys($pks)->delete($con);
                 $this->productsScheduledForDeletion = null;
             }
             foreach ($this->getProducts() as $product) {
                 if ($product->isModified()) {
                     $product->save($con);
                 }
             }
         } elseif ($this->collProducts) {
             foreach ($this->collProducts as $product) {
                 if ($product->isModified()) {
                     $product->save($con);
                 }
             }
         }
         if ($this->productCategoriesScheduledForDeletion !== null) {
             if (!$this->productCategoriesScheduledForDeletion->isEmpty()) {
                 \Thelia\Model\ProductCategoryQuery::create()->filterByPrimaryKeys($this->productCategoriesScheduledForDeletion->getPrimaryKeys(false))->delete($con);
                 $this->productCategoriesScheduledForDeletion = null;
             }
         }
         if ($this->collProductCategories !== null) {
             foreach ($this->collProductCategories as $referrerFK) {
                 if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
                     $affectedRows += $referrerFK->save($con);
                 }
             }
         }
         if ($this->categoryImagesScheduledForDeletion !== null) {
             if (!$this->categoryImagesScheduledForDeletion->isEmpty()) {
                 \Thelia\Model\CategoryImageQuery::create()->filterByPrimaryKeys($this->categoryImagesScheduledForDeletion->getPrimaryKeys(false))->delete($con);
                 $this->categoryImagesScheduledForDeletion = null;
             }
         }
         if ($this->collCategoryImages !== null) {
             foreach ($this->collCategoryImages as $referrerFK) {
                 if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
                     $affectedRows += $referrerFK->save($con);
                 }
             }
         }
         if ($this->categoryDocumentsScheduledForDeletion !== null) {
             if (!$this->categoryDocumentsScheduledForDeletion->isEmpty()) {
                 \Thelia\Model\CategoryDocumentQuery::create()->filterByPrimaryKeys($this->categoryDocumentsScheduledForDeletion->getPrimaryKeys(false))->delete($con);
                 $this->categoryDocumentsScheduledForDeletion = null;
             }
         }
         if ($this->collCategoryDocuments !== null) {
             foreach ($this->collCategoryDocuments as $referrerFK) {
                 if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
                     $affectedRows += $referrerFK->save($con);
                 }
             }
         }
         if ($this->categoryAssociatedContentsScheduledForDeletion !== null) {
             if (!$this->categoryAssociatedContentsScheduledForDeletion->isEmpty()) {
                 \Thelia\Model\CategoryAssociatedContentQuery::create()->filterByPrimaryKeys($this->categoryAssociatedContentsScheduledForDeletion->getPrimaryKeys(false))->delete($con);
                 $this->categoryAssociatedContentsScheduledForDeletion = null;
             }
         }
         if ($this->collCategoryAssociatedContents !== null) {
             foreach ($this->collCategoryAssociatedContents as $referrerFK) {
                 if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
                     $affectedRows += $referrerFK->save($con);
                 }
             }
         }
         if ($this->categoryI18nsScheduledForDeletion !== null) {
             if (!$this->categoryI18nsScheduledForDeletion->isEmpty()) {
                 \Thelia\Model\CategoryI18nQuery::create()->filterByPrimaryKeys($this->categoryI18nsScheduledForDeletion->getPrimaryKeys(false))->delete($con);
                 $this->categoryI18nsScheduledForDeletion = null;
             }
         }
         if ($this->collCategoryI18ns !== null) {
             foreach ($this->collCategoryI18ns as $referrerFK) {
                 if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
                     $affectedRows += $referrerFK->save($con);
                 }
             }
         }
         if ($this->categoryVersionsScheduledForDeletion !== null) {
             if (!$this->categoryVersionsScheduledForDeletion->isEmpty()) {
                 \Thelia\Model\CategoryVersionQuery::create()->filterByPrimaryKeys($this->categoryVersionsScheduledForDeletion->getPrimaryKeys(false))->delete($con);
                 $this->categoryVersionsScheduledForDeletion = null;
             }
         }
         if ($this->collCategoryVersions !== null) {
             foreach ($this->collCategoryVersions as $referrerFK) {
                 if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
                     $affectedRows += $referrerFK->save($con);
                 }
             }
         }
         $this->alreadyInSave = false;
     }
     return $affectedRows;
 }
コード例 #2
0
ファイル: Product.php プロジェクト: shirone/thelia
 /**
  * Performs the work of inserting or updating the row in the database.
  *
  * If the object is new, it inserts it; otherwise an update is performed.
  * All related objects are also updated in this method.
  *
  * @param      ConnectionInterface $con
  * @return int             The number of rows affected by this insert/update and any referring fk objects' save() operations.
  * @throws PropelException
  * @see save()
  */
 protected function doSave(ConnectionInterface $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 corresponding set
         // method.  This object relates to these object(s) by a
         // foreign key reference.
         if ($this->aTaxRule !== null) {
             if ($this->aTaxRule->isModified() || $this->aTaxRule->isNew()) {
                 $affectedRows += $this->aTaxRule->save($con);
             }
             $this->setTaxRule($this->aTaxRule);
         }
         if ($this->aTemplate !== null) {
             if ($this->aTemplate->isModified() || $this->aTemplate->isNew()) {
                 $affectedRows += $this->aTemplate->save($con);
             }
             $this->setTemplate($this->aTemplate);
         }
         if ($this->aBrand !== null) {
             if ($this->aBrand->isModified() || $this->aBrand->isNew()) {
                 $affectedRows += $this->aBrand->save($con);
             }
             $this->setBrand($this->aBrand);
         }
         if ($this->isNew() || $this->isModified()) {
             // persist changes
             if ($this->isNew()) {
                 $this->doInsert($con);
             } else {
                 $this->doUpdate($con);
             }
             $affectedRows += 1;
             $this->resetModified();
         }
         if ($this->categoriesScheduledForDeletion !== null) {
             if (!$this->categoriesScheduledForDeletion->isEmpty()) {
                 $pks = array();
                 $pk = $this->getPrimaryKey();
                 foreach ($this->categoriesScheduledForDeletion->getPrimaryKeys(false) as $remotePk) {
                     $pks[] = array($pk, $remotePk);
                 }
                 ProductCategoryQuery::create()->filterByPrimaryKeys($pks)->delete($con);
                 $this->categoriesScheduledForDeletion = null;
             }
             foreach ($this->getCategories() as $category) {
                 if ($category->isModified()) {
                     $category->save($con);
                 }
             }
         } elseif ($this->collCategories) {
             foreach ($this->collCategories as $category) {
                 if ($category->isModified()) {
                     $category->save($con);
                 }
             }
         }
         if ($this->productsRelatedByAccessoryScheduledForDeletion !== null) {
             if (!$this->productsRelatedByAccessoryScheduledForDeletion->isEmpty()) {
                 $pks = array();
                 $pk = $this->getPrimaryKey();
                 foreach ($this->productsRelatedByAccessoryScheduledForDeletion->getPrimaryKeys(false) as $remotePk) {
                     $pks[] = array($pk, $remotePk);
                 }
                 AccessoryRelatedByProductIdQuery::create()->filterByPrimaryKeys($pks)->delete($con);
                 $this->productsRelatedByAccessoryScheduledForDeletion = null;
             }
             foreach ($this->getProductsRelatedByAccessory() as $productRelatedByAccessory) {
                 if ($productRelatedByAccessory->isModified()) {
                     $productRelatedByAccessory->save($con);
                 }
             }
         } elseif ($this->collProductsRelatedByAccessory) {
             foreach ($this->collProductsRelatedByAccessory as $productRelatedByAccessory) {
                 if ($productRelatedByAccessory->isModified()) {
                     $productRelatedByAccessory->save($con);
                 }
             }
         }
         if ($this->productsRelatedByProductIdScheduledForDeletion !== null) {
             if (!$this->productsRelatedByProductIdScheduledForDeletion->isEmpty()) {
                 $pks = array();
                 $pk = $this->getPrimaryKey();
                 foreach ($this->productsRelatedByProductIdScheduledForDeletion->getPrimaryKeys(false) as $remotePk) {
                     $pks[] = array($pk, $remotePk);
                 }
                 AccessoryRelatedByAccessoryQuery::create()->filterByPrimaryKeys($pks)->delete($con);
                 $this->productsRelatedByProductIdScheduledForDeletion = null;
             }
             foreach ($this->getProductsRelatedByProductId() as $productRelatedByProductId) {
                 if ($productRelatedByProductId->isModified()) {
                     $productRelatedByProductId->save($con);
                 }
             }
         } elseif ($this->collProductsRelatedByProductId) {
             foreach ($this->collProductsRelatedByProductId as $productRelatedByProductId) {
                 if ($productRelatedByProductId->isModified()) {
                     $productRelatedByProductId->save($con);
                 }
             }
         }
         if ($this->productCategoriesScheduledForDeletion !== null) {
             if (!$this->productCategoriesScheduledForDeletion->isEmpty()) {
                 \Thelia\Model\ProductCategoryQuery::create()->filterByPrimaryKeys($this->productCategoriesScheduledForDeletion->getPrimaryKeys(false))->delete($con);
                 $this->productCategoriesScheduledForDeletion = null;
             }
         }
         if ($this->collProductCategories !== null) {
             foreach ($this->collProductCategories as $referrerFK) {
                 if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
                     $affectedRows += $referrerFK->save($con);
                 }
             }
         }
         if ($this->featureProductsScheduledForDeletion !== null) {
             if (!$this->featureProductsScheduledForDeletion->isEmpty()) {
                 \Thelia\Model\FeatureProductQuery::create()->filterByPrimaryKeys($this->featureProductsScheduledForDeletion->getPrimaryKeys(false))->delete($con);
                 $this->featureProductsScheduledForDeletion = null;
             }
         }
         if ($this->collFeatureProducts !== null) {
             foreach ($this->collFeatureProducts as $referrerFK) {
                 if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
                     $affectedRows += $referrerFK->save($con);
                 }
             }
         }
         if ($this->productSaleElementssScheduledForDeletion !== null) {
             if (!$this->productSaleElementssScheduledForDeletion->isEmpty()) {
                 \Thelia\Model\ProductSaleElementsQuery::create()->filterByPrimaryKeys($this->productSaleElementssScheduledForDeletion->getPrimaryKeys(false))->delete($con);
                 $this->productSaleElementssScheduledForDeletion = null;
             }
         }
         if ($this->collProductSaleElementss !== null) {
             foreach ($this->collProductSaleElementss as $referrerFK) {
                 if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
                     $affectedRows += $referrerFK->save($con);
                 }
             }
         }
         if ($this->productImagesScheduledForDeletion !== null) {
             if (!$this->productImagesScheduledForDeletion->isEmpty()) {
                 \Thelia\Model\ProductImageQuery::create()->filterByPrimaryKeys($this->productImagesScheduledForDeletion->getPrimaryKeys(false))->delete($con);
                 $this->productImagesScheduledForDeletion = null;
             }
         }
         if ($this->collProductImages !== null) {
             foreach ($this->collProductImages as $referrerFK) {
                 if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
                     $affectedRows += $referrerFK->save($con);
                 }
             }
         }
         if ($this->productDocumentsScheduledForDeletion !== null) {
             if (!$this->productDocumentsScheduledForDeletion->isEmpty()) {
                 \Thelia\Model\ProductDocumentQuery::create()->filterByPrimaryKeys($this->productDocumentsScheduledForDeletion->getPrimaryKeys(false))->delete($con);
                 $this->productDocumentsScheduledForDeletion = null;
             }
         }
         if ($this->collProductDocuments !== null) {
             foreach ($this->collProductDocuments as $referrerFK) {
                 if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
                     $affectedRows += $referrerFK->save($con);
                 }
             }
         }
         if ($this->accessoriesRelatedByProductIdScheduledForDeletion !== null) {
             if (!$this->accessoriesRelatedByProductIdScheduledForDeletion->isEmpty()) {
                 \Thelia\Model\AccessoryQuery::create()->filterByPrimaryKeys($this->accessoriesRelatedByProductIdScheduledForDeletion->getPrimaryKeys(false))->delete($con);
                 $this->accessoriesRelatedByProductIdScheduledForDeletion = null;
             }
         }
         if ($this->collAccessoriesRelatedByProductId !== null) {
             foreach ($this->collAccessoriesRelatedByProductId as $referrerFK) {
                 if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
                     $affectedRows += $referrerFK->save($con);
                 }
             }
         }
         if ($this->accessoriesRelatedByAccessoryScheduledForDeletion !== null) {
             if (!$this->accessoriesRelatedByAccessoryScheduledForDeletion->isEmpty()) {
                 \Thelia\Model\AccessoryQuery::create()->filterByPrimaryKeys($this->accessoriesRelatedByAccessoryScheduledForDeletion->getPrimaryKeys(false))->delete($con);
                 $this->accessoriesRelatedByAccessoryScheduledForDeletion = null;
             }
         }
         if ($this->collAccessoriesRelatedByAccessory !== null) {
             foreach ($this->collAccessoriesRelatedByAccessory as $referrerFK) {
                 if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
                     $affectedRows += $referrerFK->save($con);
                 }
             }
         }
         if ($this->cartItemsScheduledForDeletion !== null) {
             if (!$this->cartItemsScheduledForDeletion->isEmpty()) {
                 \Thelia\Model\CartItemQuery::create()->filterByPrimaryKeys($this->cartItemsScheduledForDeletion->getPrimaryKeys(false))->delete($con);
                 $this->cartItemsScheduledForDeletion = null;
             }
         }
         if ($this->collCartItems !== null) {
             foreach ($this->collCartItems as $referrerFK) {
                 if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
                     $affectedRows += $referrerFK->save($con);
                 }
             }
         }
         if ($this->productAssociatedContentsScheduledForDeletion !== null) {
             if (!$this->productAssociatedContentsScheduledForDeletion->isEmpty()) {
                 \Thelia\Model\ProductAssociatedContentQuery::create()->filterByPrimaryKeys($this->productAssociatedContentsScheduledForDeletion->getPrimaryKeys(false))->delete($con);
                 $this->productAssociatedContentsScheduledForDeletion = null;
             }
         }
         if ($this->collProductAssociatedContents !== null) {
             foreach ($this->collProductAssociatedContents as $referrerFK) {
                 if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
                     $affectedRows += $referrerFK->save($con);
                 }
             }
         }
         if ($this->saleProductsScheduledForDeletion !== null) {
             if (!$this->saleProductsScheduledForDeletion->isEmpty()) {
                 \Thelia\Model\SaleProductQuery::create()->filterByPrimaryKeys($this->saleProductsScheduledForDeletion->getPrimaryKeys(false))->delete($con);
                 $this->saleProductsScheduledForDeletion = null;
             }
         }
         if ($this->collSaleProducts !== null) {
             foreach ($this->collSaleProducts as $referrerFK) {
                 if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
                     $affectedRows += $referrerFK->save($con);
                 }
             }
         }
         if ($this->productI18nsScheduledForDeletion !== null) {
             if (!$this->productI18nsScheduledForDeletion->isEmpty()) {
                 \Thelia\Model\ProductI18nQuery::create()->filterByPrimaryKeys($this->productI18nsScheduledForDeletion->getPrimaryKeys(false))->delete($con);
                 $this->productI18nsScheduledForDeletion = null;
             }
         }
         if ($this->collProductI18ns !== null) {
             foreach ($this->collProductI18ns as $referrerFK) {
                 if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
                     $affectedRows += $referrerFK->save($con);
                 }
             }
         }
         if ($this->productVersionsScheduledForDeletion !== null) {
             if (!$this->productVersionsScheduledForDeletion->isEmpty()) {
                 \Thelia\Model\ProductVersionQuery::create()->filterByPrimaryKeys($this->productVersionsScheduledForDeletion->getPrimaryKeys(false))->delete($con);
                 $this->productVersionsScheduledForDeletion = null;
             }
         }
         if ($this->collProductVersions !== null) {
             foreach ($this->collProductVersions as $referrerFK) {
                 if (!$referrerFK->isDeleted() && ($referrerFK->isNew() || $referrerFK->isModified())) {
                     $affectedRows += $referrerFK->save($con);
                 }
             }
         }
         $this->alreadyInSave = false;
     }
     return $affectedRows;
 }