Я хочу, чтобы логика для хранения всех категорий Ebay и его количество подкатегорий уровня в моей локальной базе данных

Я принес ebay categories Использование API curl Но проблема в том, что я не могу хранить все категории ebay и n подкатегорий уровней в моей базе данных, потому что какая-то ошибка в моей логике, поэтому, пожалуйста, помогите мне.

//MyModulecontroller.php

$Url ="http://open.api.ebay.com/shopping?callname=GetCategoryInfo&responseencoding=JSON&appid=test316d2-03da-4769-b501-b302e04a00b&siteid=0&version=525&CategoryID=-1&IncludeSelector=ChildCategories"
$ch=curl_init($Url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$r=curl_exec($ch);
curl_close($ch);
echo "<pre/>";
$categoryArray = json_decode($r,true);
print_r($categoryArray);

foreach($array as $key=>$value)
{
for($i=1;$i<=2;$i++)
{
foreach($value["Category"] as $category)
{

if($category["CategoryID"]==-1) continue;
if($i==1)
Mage::helper('mymodule1')->importCategories($category);

else
Mage::helper('mymodule1')->getCategories($category);


}
}
}

// Helper / Data.php

public function callCategories($category)
{
$categoryId = $category["CategoryID"];

$Url ="http://open.api.ebay.com/shopping?callname=GetCategoryInfo&responseencoding=JSON&appid=test316d2-03da-4769-b501-b302e04a00b&siteid=0&version=525&CategoryID=".$categoryId."&IncludeSelector=ChildCategories";

$ch=curl_init($Url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$r=curl_exec($ch);
curl_close($ch);
$categoryArray = json_decode($r,true);
foreach($categoryArray as $key=>$value)
{

foreach($value["Category"] as $category)
{
if($category["CategoryID"]==$category["CategoryParentID"])
continue;

$categoryModel = Mage::getModel('catalog/category')->getCollection()
->addFieldToFilter('ebayCategoryId',$value["CategoryParentID"]);

if($categoryModel->getCount() > 0)
$categoryMagentoId = $categoryModel->getId();

if($i==1)
{
importNewCategories($category,$categoryMagentoId);
}
else
{
if($category["CategoryID"]==$category["CategoryParentID"]) continue;
callCategories($category["CategoryID"]);
}

}
}
}
public function importCategories($categoryObject)
{
if($categoryObject["CategoryParentID"] == -1)
$parentId = 2;

$categoryModel = Mage::getModel('catalog/category');
$categoryModel->setName($categoryObject["CategoryName"])
->setIsActive(1)                       //activate your category
->setDisplayMode('PRODUCTS')
->setIsAnchor(1)
->setCustomDesignApply(1)
->setAttributeSetId($category->getDefaultAttributeSetId());

$categoryModel->getDefaultAttributeSetId();
$parentCategory = Mage::getModel('catalog/category')->load($parentId);
$categoryModel->setPath($parentCategory->getPath());

$categoryModel->save();
$cateId = $categoryModel->getId();
unset($categoryModel);
}

-1

Решение

Угадайте здесь, но, возможно, ваша проблема в том, что вы не знаете, как сохранить данные в таблице базы данных, чтобы категории сохраняли свои родительские / дочерние отношения? Если так, вот мой ответ. Ниже приведены 4 примера результатов, корневой и 3 дочерних, от вызова curl до URL eBay. Что вам нужно сделать, это создать таблицу базы данных для категорий и вставить их. Возможное определение поля таблицы может быть:

id, name, level, parent_id, leaf_category

Поле «parent_id» является ключевым — именно это скажет вам, как ваши категории связаны друг с другом. Если бы было больше, чем просто уровень 0 и 1, я бы предложил вторую таблицу для сопоставления каждой категории с ее родителем по id. Но эти уровни тривиальны, поэтому я думаю, что вы могли бы избежать использования одной таблицы.

Я не уверен, как вы можете получить это в существующей структуре таблицы категорий Magento как бы то ни было. Может быть, другие могут говорить об этом.

{"CategoryID":"-1","CategoryLevel":0,"CategoryName":"Root","CategoryParentID":"0","LeafCategory":false}

{"CategoryID":"20081","CategoryLevel":1,"CategoryName":"Antiques","CategoryParentID":"-1","CategoryNamePath":"Antiques","CategoryIDPath":"20081","LeafCategory":false}

{"CategoryID":"550","CategoryLevel":1,"CategoryName":"Art","CategoryParentID":"-1","CategoryNamePath":"Art","CategoryIDPath":"550","LeafCategory":false}

{"CategoryID":"99","CategoryLevel":1,"CategoryName":"Everything Else","CategoryParentID":"-1","CategoryNamePath":"Everything Else","CategoryIDPath":"99","LeafCategory":false}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector