数据库中列出的产品未在“管理”>“产品列表”中列出
Product is listed on database is not listed in Admin > Products List
作为 Opencart 的新手,我添加了带有静态数组的产品只是为了测试 addProduct 函数,但我无法让它工作。
静态数组:
$data['pid'] = $this->model_catalog_product->addProduct([
'product_description' => [['name' => 'bakbuişte', 'description' => '', 'meta_title' => 'metaraba', 'meta_description' => '', 'meta_keyword' => '', 'tag' => '']],
'model' => 'amabigun',
'sku' => '',
'upc' => '',
'ean' => '',
'jan' => '',
'isbn' => '',
'mpn' => '',
'location' => '',
'price' => '',
'tax_class_id' => '0',
'quantity' => '1',
'minimum' => '1',
'subtract' => '1',
'stock_status_id' => '6',
'shipping' => '1',
'date_available' => '2019-12-31',
'length' => '',
'width' => '',
'height' => '',
'length_class_id' => '1',
'weight' => '',
'weight_class_id' => '1',
'status' => '1',
'sort_order' => '1',
'manufacturer' => '',
'manufacturer_id' => '',
'category' => '',
'filter' => '',
'product_store' => array(0 => '0',),
'download' => '',
'related' => '',
'option' => '',
'image' => '',
'points' => '',
'product_reward' => array(1 => array('points' => '',),),
'product_seo_url' => array(0 => array(1 => '',),),
'product_layout' => array(0 => '',)
]);
在此块之后,我在 oc_product
table 中看到了条目,就像其他条目一样,但在管理 > 目录 > 产品列表中没有。还有什么需要准备的小东西吗?
看一下 addProduct()
函数,您会看到一些代码向 description
table 执行插入,如下所示:
foreach ($data['product_description'] as $language_id => $value) {
...
}
根据该逻辑,数组键是 language_id。在你的数组中你有:
'product_description' => [['name' => 'bakbuişte', 'description' => '', 'meta_title' => 'metaraba', 'meta_description' => '', 'meta_keyword' => '', 'tag' => '']],
由于没有定义数组键,您的描述分配给键0
。您的语言 table 有 language_id 的 0
吗?可能不会。一个典型的(默认)opencart 安装有一种语言 language_id of 1
。考虑到这一点,您的数组应如下所示:
'product_description' => [1 => ['name' => 'bakbuişte', 'description' => '', 'meta_title' => 'metaraba', 'meta_description' => '', 'meta_keyword' => '', 'tag' => '']],
当您用错误的 language_id 编写描述行时失败的原因是产品列表是通过这样的查询检索的:
SELECT *
FROM product p
LEFT JOIN product_description pd ON (p.product_id = pd.product_id)
WHERE pd.language_id = '1';
注意到最后的 where
条件了吗?如果您的描述 table 缺少与 language_id 1 对应的行,查询将忽略您的产品行。
作为 Opencart 的新手,我添加了带有静态数组的产品只是为了测试 addProduct 函数,但我无法让它工作。
静态数组:
$data['pid'] = $this->model_catalog_product->addProduct([
'product_description' => [['name' => 'bakbuişte', 'description' => '', 'meta_title' => 'metaraba', 'meta_description' => '', 'meta_keyword' => '', 'tag' => '']],
'model' => 'amabigun',
'sku' => '',
'upc' => '',
'ean' => '',
'jan' => '',
'isbn' => '',
'mpn' => '',
'location' => '',
'price' => '',
'tax_class_id' => '0',
'quantity' => '1',
'minimum' => '1',
'subtract' => '1',
'stock_status_id' => '6',
'shipping' => '1',
'date_available' => '2019-12-31',
'length' => '',
'width' => '',
'height' => '',
'length_class_id' => '1',
'weight' => '',
'weight_class_id' => '1',
'status' => '1',
'sort_order' => '1',
'manufacturer' => '',
'manufacturer_id' => '',
'category' => '',
'filter' => '',
'product_store' => array(0 => '0',),
'download' => '',
'related' => '',
'option' => '',
'image' => '',
'points' => '',
'product_reward' => array(1 => array('points' => '',),),
'product_seo_url' => array(0 => array(1 => '',),),
'product_layout' => array(0 => '',)
]);
在此块之后,我在 oc_product
table 中看到了条目,就像其他条目一样,但在管理 > 目录 > 产品列表中没有。还有什么需要准备的小东西吗?
看一下 addProduct()
函数,您会看到一些代码向 description
table 执行插入,如下所示:
foreach ($data['product_description'] as $language_id => $value) {
...
}
根据该逻辑,数组键是 language_id。在你的数组中你有:
'product_description' => [['name' => 'bakbuişte', 'description' => '', 'meta_title' => 'metaraba', 'meta_description' => '', 'meta_keyword' => '', 'tag' => '']],
由于没有定义数组键,您的描述分配给键0
。您的语言 table 有 language_id 的 0
吗?可能不会。一个典型的(默认)opencart 安装有一种语言 language_id of 1
。考虑到这一点,您的数组应如下所示:
'product_description' => [1 => ['name' => 'bakbuişte', 'description' => '', 'meta_title' => 'metaraba', 'meta_description' => '', 'meta_keyword' => '', 'tag' => '']],
当您用错误的 language_id 编写描述行时失败的原因是产品列表是通过这样的查询检索的:
SELECT *
FROM product p
LEFT JOIN product_description pd ON (p.product_id = pd.product_id)
WHERE pd.language_id = '1';
注意到最后的 where
条件了吗?如果您的描述 table 缺少与 language_id 1 对应的行,查询将忽略您的产品行。