public function loadRelationships($loadReferencedRecords = false, $type = 0) { ClassLoader::import('application.model.product.ProductRelationship'); if (empty($this->relationships[$type])) { $this->relationships[$type] = ProductRelationship::getRelationships($this, $loadReferencedRecords, $type); } return $this->relationships[$type]; }
public function testGetRelatedProducts() { // new product $product = Product::getNewInstance($this->rootCategory, 'test'); $product->save(); // groups $groups = array(0 => null); foreach (range(1, 2) as $i) { $groups[$i] = ProductRelationshipGroup::getNewInstance($product, ProductRelationship::TYPE_CROSS); $groups[$i]->position->set($i); $groups[$i]->setValueByLang('name', 'en', 'TEST_GROUP_' . $i); $groups[$i]->save(); } // related products $relatedProducts = array(); $relationships = array(); foreach (range(1, 9) as $i) { $relatedProducts[$i] = Product::getNewInstance($this->rootCategory, 'test'); $relatedProducts[$i]->save(); $relationships[$i] = ProductRelationship::getNewInstance($product, $relatedProducts[$i], $groups[floor(($i - 1) / 3)]); $relationships[$i]->position->set(9 - $i); $relationships[$i]->save(); } // test order $groupPosition = -1; $productPosition = -1; foreach (ProductRelationship::getRelationships($product, false, ProductRelationship::TYPE_CROSS) as $relationship) { $currentGroupPosition = $relationship->productRelationshipGroup->get() ? $relationship->productRelationshipGroup->get()->position->get() : $groupPosition; $currentProductPosition = $relationship->position->get(); $this->assertTrue($productPosition <= $currentProductPosition || $groupPosition <= $currentGroupPosition, "{$productPosition} <= {$currentProductPosition} || {$groupPosition} <= {$currentGroupPosition}"); $groupPosition = $currentGroupPosition; $productPosition = $currentProductPosition; } }