src/Core/Content/Product/ProductHydrator.php line 182

  1. <?php declare(strict_types=1);
  2. namespace Shopware\Core\Content\Product;
  3. use Shopware\Core\Framework\Context;
  4. use Shopware\Core\Framework\DataAbstractionLayer\Dbal\EntityHydrator;
  5. use Shopware\Core\Framework\DataAbstractionLayer\Entity;
  6. use Shopware\Core\Framework\DataAbstractionLayer\EntityDefinition;
  7. use Shopware\Core\Framework\Log\Package;
  8. use Shopware\Core\Framework\Uuid\Uuid;
  9. #[Package('inventory')]
  10. class ProductHydrator extends EntityHydrator
  11. {
  12.     /**
  13.      * @param array<string, string> $row
  14.      *
  15.      * @throws \Exception
  16.      */
  17.     protected function assign(EntityDefinition $definitionEntity $entitystring $root, array $rowContext $context): Entity
  18.     {
  19.         if (isset($row[$root '.id'])) {
  20.             $entity->id Uuid::fromBytesToHex($row[$root '.id']);
  21.         }
  22.         if (isset($row[$root '.versionId'])) {
  23.             $entity->versionId Uuid::fromBytesToHex($row[$root '.versionId']);
  24.         }
  25.         if (isset($row[$root '.parentId'])) {
  26.             $entity->parentId Uuid::fromBytesToHex($row[$root '.parentId']);
  27.         }
  28.         if (isset($row[$root '.manufacturerId'])) {
  29.             $entity->manufacturerId Uuid::fromBytesToHex($row[$root '.manufacturerId']);
  30.         }
  31.         if (isset($row[$root '.unitId'])) {
  32.             $entity->unitId Uuid::fromBytesToHex($row[$root '.unitId']);
  33.         }
  34.         if (isset($row[$root '.taxId'])) {
  35.             $entity->taxId Uuid::fromBytesToHex($row[$root '.taxId']);
  36.         }
  37.         if (isset($row[$root '.coverId'])) {
  38.             $entity->coverId Uuid::fromBytesToHex($row[$root '.coverId']);
  39.         }
  40.         if (isset($row[$root '.deliveryTimeId'])) {
  41.             $entity->deliveryTimeId Uuid::fromBytesToHex($row[$root '.deliveryTimeId']);
  42.         }
  43.         if (isset($row[$root '.featureSetId'])) {
  44.             $entity->featureSetId Uuid::fromBytesToHex($row[$root '.featureSetId']);
  45.         }
  46.         if (isset($row[$root '.canonicalProductId'])) {
  47.             $entity->canonicalProductId Uuid::fromBytesToHex($row[$root '.canonicalProductId']);
  48.         }
  49.         if (isset($row[$root '.cmsPageId'])) {
  50.             $entity->cmsPageId Uuid::fromBytesToHex($row[$root '.cmsPageId']);
  51.         }
  52.         if (\array_key_exists($root '.price'$row)) {
  53.             $entity->price $definition->decode('price'self::value($row$root'price'));
  54.         }
  55.         if (isset($row[$root '.productNumber'])) {
  56.             $entity->productNumber $row[$root '.productNumber'];
  57.         }
  58.         if (isset($row[$root '.stock'])) {
  59.             $entity->stock = (int) $row[$root '.stock'];
  60.         }
  61.         if (isset($row[$root '.restockTime'])) {
  62.             $entity->restockTime = (int) $row[$root '.restockTime'];
  63.         }
  64.         if (isset($row[$root '.autoIncrement'])) {
  65.             $entity->autoIncrement = (int) $row[$root '.autoIncrement'];
  66.         }
  67.         if (isset($row[$root '.active'])) {
  68.             $entity->active = (bool) $row[$root '.active'];
  69.         }
  70.         if (isset($row[$root '.availableStock'])) {
  71.             $entity->availableStock = (int) $row[$root '.availableStock'];
  72.         }
  73.         if (isset($row[$root '.available'])) {
  74.             $entity->available = (bool) $row[$root '.available'];
  75.         }
  76.         if (isset($row[$root '.isCloseout'])) {
  77.             $entity->isCloseout = (bool) $row[$root '.isCloseout'];
  78.         }
  79.         if (isset($row[$root '.displayGroup'])) {
  80.             $entity->displayGroup $row[$root '.displayGroup'];
  81.         }
  82.         if (isset($row[$root '.states'])) {
  83.             $entity->states $definition->decode('states'self::value($row$root'states'));
  84.         }
  85.         if (isset($row[$root '.variantListingConfig'])) {
  86.             $entity->variantListingConfig $definition->decode('variantListingConfig'self::value($row$root'variantListingConfig'));
  87.         }
  88.         if (\array_key_exists($root '.variantRestrictions'$row)) {
  89.             $entity->variantRestrictions $definition->decode('variantRestrictions'self::value($row$root'variantRestrictions'));
  90.         }
  91.         if (isset($row[$root '.manufacturerNumber'])) {
  92.             $entity->manufacturerNumber $row[$root '.manufacturerNumber'];
  93.         }
  94.         if (isset($row[$root '.ean'])) {
  95.             $entity->ean $row[$root '.ean'];
  96.         }
  97.         if (isset($row[$root '.purchaseSteps'])) {
  98.             $entity->purchaseSteps = (int) $row[$root '.purchaseSteps'];
  99.         }
  100.         if (isset($row[$root '.maxPurchase'])) {
  101.             $entity->maxPurchase = (int) $row[$root '.maxPurchase'];
  102.         }
  103.         if (isset($row[$root '.minPurchase'])) {
  104.             $entity->minPurchase = (int) $row[$root '.minPurchase'];
  105.         }
  106.         if (isset($row[$root '.purchaseUnit'])) {
  107.             $entity->purchaseUnit = (float) $row[$root '.purchaseUnit'];
  108.         }
  109.         if (isset($row[$root '.referenceUnit'])) {
  110.             $entity->referenceUnit = (float) $row[$root '.referenceUnit'];
  111.         }
  112.         if (isset($row[$root '.shippingFree'])) {
  113.             $entity->shippingFree = (bool) $row[$root '.shippingFree'];
  114.         }
  115.         if (\array_key_exists($root '.purchasePrices'$row)) {
  116.             $entity->purchasePrices $definition->decode('purchasePrices'self::value($row$root'purchasePrices'));
  117.         }
  118.         if (isset($row[$root '.markAsTopseller'])) {
  119.             $entity->markAsTopseller = (bool) $row[$root '.markAsTopseller'];
  120.         }
  121.         if (isset($row[$root '.weight'])) {
  122.             $entity->weight = (float) $row[$root '.weight'];
  123.         }
  124.         if (isset($row[$root '.width'])) {
  125.             $entity->width = (float) $row[$root '.width'];
  126.         }
  127.         if (isset($row[$root '.height'])) {
  128.             $entity->height = (float) $row[$root '.height'];
  129.         }
  130.         if (isset($row[$root '.length'])) {
  131.             $entity->length = (float) $row[$root '.length'];
  132.         }
  133.         if (isset($row[$root '.releaseDate'])) {
  134.             $entity->releaseDate = new \DateTimeImmutable($row[$root '.releaseDate']);
  135.         }
  136.         if (isset($row[$root '.ratingAverage'])) {
  137.             $entity->ratingAverage = (float) $row[$root '.ratingAverage'];
  138.         }
  139.         if (\array_key_exists($root '.categoryTree'$row)) {
  140.             $entity->categoryTree $definition->decode('categoryTree'self::value($row$root'categoryTree'));
  141.         }
  142.         if (\array_key_exists($root '.propertyIds'$row)) {
  143.             $entity->propertyIds $definition->decode('propertyIds'self::value($row$root'propertyIds'));
  144.         }
  145.         if (\array_key_exists($root '.optionIds'$row)) {
  146.             $entity->optionIds $definition->decode('optionIds'self::value($row$root'optionIds'));
  147.         }
  148.         if (\array_key_exists($root '.streamIds'$row)) {
  149.             $entity->streamIds $definition->decode('streamIds'self::value($row$root'streamIds'));
  150.         }
  151.         if (\array_key_exists($root '.tagIds'$row)) {
  152.             $entity->tagIds $definition->decode('tagIds'self::value($row$root'tagIds'));
  153.         }
  154.         if (\array_key_exists($root '.categoryIds'$row)) {
  155.             $entity->categoryIds $definition->decode('categoryIds'self::value($row$root'categoryIds'));
  156.         }
  157.         if (isset($row[$root '.childCount'])) {
  158.             $entity->childCount = (int) $row[$root '.childCount'];
  159.         }
  160.         if (isset($row[$root '.customFieldSetSelectionActive'])) {
  161.             $entity->customFieldSetSelectionActive = (bool) $row[$root '.customFieldSetSelectionActive'];
  162.         }
  163.         if (isset($row[$root '.sales'])) {
  164.             $entity->sales = (int) $row[$root '.sales'];
  165.         }
  166.         if (\array_key_exists($root '.cheapestPrice'$row)) {
  167.             $entity->cheapestPrice $definition->decode('cheapestPrice'self::value($row$root'cheapestPrice'));
  168.         }
  169.         if (isset($row[$root '.createdAt'])) {
  170.             $entity->createdAt = new \DateTimeImmutable($row[$root '.createdAt']);
  171.         }
  172.         if (isset($row[$root '.updatedAt'])) {
  173.             $entity->updatedAt = new \DateTimeImmutable($row[$root '.updatedAt']);
  174.         }
  175.         $entity->deliveryTime $this->manyToOne($row$root$definition->getField('deliveryTime'), $context);
  176.         $entity->tax $this->manyToOne($row$root$definition->getField('tax'), $context);
  177.         $entity->manufacturer $this->manyToOne($row$root$definition->getField('manufacturer'), $context);
  178.         $entity->unit $this->manyToOne($row$root$definition->getField('unit'), $context);
  179.         $entity->cover $this->manyToOne($row$root$definition->getField('cover'), $context);
  180.         $entity->featureSet $this->manyToOne($row$root$definition->getField('featureSet'), $context);
  181.         $entity->cmsPage $this->manyToOne($row$root$definition->getField('cmsPage'), $context);
  182.         $entity->canonicalProduct $this->manyToOne($row$root$definition->getField('canonicalProduct'), $context);
  183.         $this->translate($definition$entity$row$root$context$definition->getTranslatedFields());
  184.         $this->hydrateFields($definition$entity$root$row$context$definition->getExtensionFields());
  185.         $this->customFields($definition$row$root$entity$definition->getField('customFields'), $context);
  186.         $this->manyToMany($row$root$entity$definition->getField('options'));
  187.         $this->manyToMany($row$root$entity$definition->getField('properties'));
  188.         $this->manyToMany($row$root$entity$definition->getField('categories'));
  189.         $this->manyToMany($row$root$entity$definition->getField('streams'));
  190.         $this->manyToMany($row$root$entity$definition->getField('categoriesRo'));
  191.         $this->manyToMany($row$root$entity$definition->getField('tags'));
  192.         $this->manyToMany($row$root$entity$definition->getField('customFieldSets'));
  193.         return $entity;
  194.     }
  195. }