将类别添加到产品prestashop

时间:2016-06-08 10:44:37

标签: php sql prestashop webshop

所以我已经处理了这个问题很长一段时间了,并且无法找到明确的解决方案。所以基本上我是使用产品对象直接将新产品添加到数据库中。目前它进展顺利,但我无法将新产品与一个类别联系起来。

$cat_ids = [];
    foreach ($value['kat_naziv'] as $cat_val) {
    $cat_ids[] = (int)$luceed->selectCategoryIds($cat_val)[$cat_val]['id_category'];
}

$product->id_category = 3;
$product->id_category_default = 3;

$product->save();

$product->addToCategories($cat_ids);

所以基本上$ cat_ids是我从db获取的整数数组,其中name是作为参数传递给selectCategoryIds的东西;

这里有什么问题,为什么它不会将新创建的产品与我给它的类别联系起来

3 个答案:

答案 0 :(得分:1)

创建新产品后(即$ product = new Product())。您可以使用分配产品类别。

$product->updateCategories($category_array); 

其中

$category_array = array("0" => "2", "1" => "3", "4" => "6"...... );

答案 1 :(得分:0)

@FMEModule这正是我在那里所做的,但我已经用数据库中的类别ID填充了数组

无论如何,我最终编写了自己的查询,用于将类别与产品相关联

答案 2 :(得分:0)

版本(1.6)

我在Product.php的{​​{1}}中发现以下错误,搜索addToCategories(第964行),

注意if (!in_array($new_id_categ, $current_categories))缺少if - 添加它们,问题就解决了:

{}

Prestashop开发人员喜欢在 foreach ($categories as $new_id_categ) { if (!in_array($new_id_categ, $current_categories)) { if ($position == null) { $position = (int)$new_categ_pos[$new_id_categ]; } $product_cats[] = array( 'id_category' => (int)$new_id_categ, 'id_product' => (int)$this->id, 'position' => $position, ); } } {}之后省略if - 这是晚餐烦人且容易出错。

此问题已在回购中修复: https://github.com/PrestaShop/PrestaShop/blob/1.6.1.x/classes/Product.php

注意:此解决方案解决了以下情况中的错误 - foreach 虽然我不确定这是否是问题中的情景。