Php 将类别添加到product prestashop
所以我处理这个问题已经有一段时间了,没有找到一个明确的解决方案。因此,基本上,我使用Product对象将新产品直接添加到数据库中。目前进展顺利,但我无法将新产品与类别联系起来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
$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));在我的演示上。工作得很好!完全不知道我为什么会这样