/** * {@inheritDoc} */ public function getSimilar() { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getSimilar', array()); return parent::getSimilar(); }
/** * @param array $data * @param \Shopware\Models\Article\Article $article * @throws \Shopware\Components\Api\Exception\CustomValidationException * @return array */ protected function prepareSimilarAssociatedData($data, ArticleModel $article) { if (!isset($data['similar'])) { return $data; } $similar = $this->checkDataReplacement($article->getSimilar(), $data, 'similar', true); foreach ($data['similar'] as $similarData) { if (empty($similarData['number']) && empty($similarData['id'])) { continue; } $similarArticle = null; if ($similarData['number']) { $articleId = $this->getManager()->getConnection()->fetchColumn("SELECT articleID FROM s_articles_details WHERE ordernumber = :number", array(':number' => $similarData['number'])); if ($articleId) { $similarArticle = $this->getManyToManySubElement($similar, array('id' => $articleId), '\\Shopware\\Models\\Article\\Article'); } } if (!$similarArticle) { $similarArticle = $this->getManyToManySubElement($similar, $similarData, '\\Shopware\\Models\\Article\\Article'); } //no valid entity found, throw exception! if (!$similarArticle) { $property = $similarData['number'] ? $similarData['number'] : $similarData['id']; throw new ApiException\CustomValidationException(sprintf("Similar Article by number/id %s not found", $property)); } /**@var $similarArticle ArticleModel */ if ($similarData['cross']) { $similarArticle->getSimilar()->add($article); } } $data['similar'] = $similar; return $data; }