/** * @param string $importKeyProductOptionValue * @param string $importKeyProductOptionType * @param array $localizedNames * @param int|null $price * * @return int */ public function importProductOptionValue($importKeyProductOptionValue, $importKeyProductOptionType, array $localizedNames = [], $price = null) { $idProductOptionType = $this->getIdProductOptionType($importKeyProductOptionType); $productOptionValueEntity = $this->queryContainer->queryProductOptionValueByImportKeyAndFkProductOptionType($importKeyProductOptionValue, $idProductOptionType)->findOneOrCreate(); if ($price !== null) { $priceEntity = (new SpyProductOptionValuePrice())->setPrice($price); $productOptionValueEntity->setSpyProductOptionValuePrice($priceEntity); } if ($productOptionValueEntity->isNew()) { $productOptionValueEntity->save(); } $this->createOrUpdateOptionValueTranslations($productOptionValueEntity, $localizedNames); $productOptionValueEntity->save(); $associatedProductAbstractIds = $this->queryContainer->queryAssociatedProductAbstractIdsForProductOptionValue($productOptionValueEntity->getIdProductOptionValue())->find(); foreach ($associatedProductAbstractIds as $idProductAbstract) { $this->touchProductAbstractById($idProductAbstract); } return $productOptionValueEntity->getIdProductOptionValue(); }