我正在codeigniter中编写一个外部应用程序,它将读取产品的条形码并更新 Prestashop 数据库中的数量。现在我不确定我应该更新哪些表/表。数据库中有_DB_PREFIX_product,_DB_PREFIX_product_attribute,_DB_PREFIX_stock_available表,其中,产品ID和数量列可用。
和条形码列(ean13)在前2个表中可用。 请让我知道我应该更新哪些表格来正确更改产品数量
(prestashop版本为1.6)
答案 0 :(得分:1)
从id_product
选择_DB_PREFIX_product
,然后在_DB_PREFIX_stock_available
更新数量。
你可以使用prestashop类,我从未使用过条形码所以不知道ean13是什么,但代码必须是。
<?php
include('config/config.inc.php');
include('init.php');
$ean13 = "ean13";
$sql = "SELECT id_product FROM _DB_PREFIX_product WHERE ean13='$ean13'";
//replace _DB_PREFIX_ with your prefix or define _DB_PREFIX_ on top.
$product_id = Db::getInstance()->getValue($sql);
if (!empty($product_id)) {
$quantity = 100;
StockAvailable::setQuantity((int)$product_id, 0, $quantity);
}
?>
StockAvailable::setQuantity((int)$product_id, 0, $quantity);
这里的第二个参数是id_product_attribute
为什么我通过0
,因为id_product_attribute
在pestashop用户可以为每个属性组合e.g 300 quantity for blue color and Mediam size
添加股票。因此,如果您要更新特定组合的数量,则必须将该组合的ID传递为id_product_attribute
。将0
作为id_product_attribute
传递将更新产品的总数量和库存。
如果您不想使用prestashop类并希望从外部类更新db,则查询将为UPDATE _Db_PREFIX_stock_availble SET quantity='$quantity' WHERE id_product='$productID' AND id_product_attribute=0
答案 1 :(得分:0)
我如何更新所有产品数量类型的包装?
<?php
include('config/config.inc.php');
include('init.php');
$sql = "SELECT id_product_pack FROM _DB_PREFIX_pack";
$product_id = Db::getInstance()->getValue($sql);
if (!empty($product_id)) {
$quantity = 100;
StockAvailable::setQuantity((int)$product_id, 0, $quantity);
}
?>