Проставить соотношение товаров в категориях 3 уровня с категориями 2 уровня динамически через php Opencart с использованием KOHANA
Задача: вывести товары из категорий низших уровней в категорию на уровень выше
<?php
function getAllFromTable($tableName, $db = NULL, $order = "")
{
try
{
$sql = "SELECT * FROM " . $tableName . " " . $order;
$res = DB::query(Database::SELECT, $sql)
->execute($db)->as_array();
return $res;
} catch (exception $e)
{
echo $e->getMessage();
return null;
}
}
function addRowInTable($table, $fields = array('item' => 'sss', 'desk' => 'dadada', 'id' => 10), $db = NULL)
{
$tableFieldsSql = '';
$tableFieldsValuesSql = '';
foreach ($fields as $key => $field)
{
$tableFieldsSql = $tableFieldsSql . $key . ',';
$tableFieldsValuesSql = $tableFieldsValuesSql . "'" . $field . "'" . ',';
}
$tableFieldsSql = trim($tableFieldsSql, ',');
$tableFieldsValuesSql = trim($tableFieldsValuesSql, ',');
$sql = "INSERT INTO " . $table . " (" . $tableFieldsSql . ") VALUES (" . $tableFieldsValuesSql . ")";
$res = DB::query(Database::INSERT, $sql)
->execute($db);
return $res[0];
}
function opencart()
{
/*добавляем соотношение категорий и товаров*/
$cats = getAllFromTable(" oc_category where category_id<>861"); /*выбрали все кроме категории каталог*/
/*проходим по всем категориям 2 уровня принадлежащим категории 1 уровня КАТАЛОГ*/
/*861 = category_id = идентификатор категории Каталог к которой принадлежат все остальные категории*/
foreach ($cats as $item):
if ($item['parent_id'] == 861) /*выбрали категории 2 уровня, которые принадлежат категории Каталог - 861*/
{
/*$rootCat категория 2 уровня */
$rootCat=$item;
/*теперь ищем подкатегории 3 уровня принадлежащие к категории 2 уровня*/
foreach ($cats as $podItem):
if ($podItem['parent_id'] == $rootCat['category_id'] )
{
/*выбираем идентификаторы товаров которые принадлежат категории 3 уровня*/
$sql = "SELECT product_id FROM oc_product_to_category WHERE category_id=".$podItem['category_id'];
$products = DB::query(Database::SELECT, $sql)->execute()->as_array();
foreach ($products as $product):
/* Добавляем соотношение категории 2 уровня к товарам подкатегорий 3 уровня*/
$fields= array('product_id' =>$product['product_id'] ,'category_id'=>$rootCat['category_id'],'main_category'=>0);
addRowInTable("oc_product_to_category",$fields);
endforeach;
}
endforeach;
}
endforeach;
}
?>