Php 将类别添加到product prestashop

Php 将类别添加到product prestashop,php,sql,prestashop,webshop,Php,Sql,Prestashop,Webshop,所以我处理这个问题已经有一段时间了,没有找到一个明确的解决方案。因此,基本上,我使用Product对象将新产品直接添加到数据库中。目前进展顺利,但我无法将新产品与类别联系起来 $cat_ids = []; foreach ($value['kat_naziv'] as $cat_val) { $cat_ids[] = (int)$luceed->selectCategoryIds($cat_val)[$cat_val]['id_category']; } $product

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

$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_id是一个整数数组,我从db中得到,其中name是我作为参数传递给selectCategoryId的东西


这里的问题是,为什么在创建新产品(即$product=new product())之后,它不会将新创建的产品与我给它的类别关联起来。您可以使用为产品指定类别

$product->updateCategories($category_array); 
在哪里

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

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

无论如何,我最终写下了我自己的查询,将产品与类别关联起来

版本(1.6)

我在
Product.php
中发现了以下错误,在
addToCategories
中,搜索
if(!in_array($new_id_categories,$current_categories))
(第964行)

请注意,
如果
丢失了
{}
,请添加它们,问题就解决了:

    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,
            );
        }

    }
Prestashop开发者喜欢在
if
foreach
之后省略
{}
——这非常烦人而且容易出现错误

回购协议中固定了该问题:

注意:此解决方案解决了以下场景中的错误-
已链接到某个类别的产品将链接到另一个类别(同时保留原始类别)

虽然我不确定这是否是问题中的场景。

您可以通过此代码打印测试$cat\u id数组($cat\u id);模具();我觉得这个数组中没有任何元素。另外,产品对象没有id_category.Array([0]=>9[1]=>12)这是它输出的内容。我怀疑问题是否存在,因为我尝试了这一行代码,但没有任何结果$product->addToCategories(array(3,4,5));我以前试过,我在某个地方找到了答案,addToCategories只对已创建的产品起作用,因此应该在addToCategories之前运行save()。在我尝试测试代码之后,我刚刚删除了对此的评论。我刚刚测试了$product->addToCategories(数组(3,4,5));在我的演示上。工作得很好!完全不知道我为什么会这样