【问题标题】:prestashop get total quantityprestashop 获取总量
【发布时间】:2016-06-18 02:08:19
【问题描述】:

我想输出我的产品数量,但是如果产品有组合我就不能得到数量。

我正在使用:$product[ 'quantity' ] 获取产品数量。如果我有没有组合的产品,它会起作用。

奇怪的是,如果我在 BO 中打开产品选项卡,我可以看到总数量:20(10 qnt 红色梳子,10 qnt 黑色梳子)。所以这对我来说很好。但是当我导出数据时,我得到数量:0 因为主要产品数量:0 并且产品有 10 个红色 qnt 和 10 个黑色 qnt 组合。我可以获取属性列表,但是如何获取数量或总数量的组合列表?

【问题讨论】:

  • 您使用的是哪个版本的 PrestaShop?
  • 我使用的是 1.5.3 版本 :)

标签: combinations prestashop


【解决方案1】:

如果你在前台需要它的模板,你需要调用is as object property:

{$product->quantity}

这将返回所有组合的总数。

如果你在控制器需要它,它是一样的:

$product = new Product($id_product);
echo $product->quantity;

这将再次返回所有组合的总数。

关于数据库:数量保存在:ps_stock_available 表中。如果您需要获取包含组合的产品的总数量,请获取“id_product_attribute” = 0 的“数量”字段。

下面是 ID=1 的产品查询示例:

SELECT p.id_product, sa.quantity
FROM ps_product p 
INNER JOIN ps_stock_available sa ON p.id_product = sa.id_product AND id_product_attribute = 0
WHERE p.id_product = 1

如果您从 $products = Product::getProducts(...) 循环访问产品

foreach ($products as $product)
    echo Product::getQuantity($product['id_product']);

【讨论】:

  • $products = Product::getProducts( $id_lang, 0, 0, 'name', 'ASC', $id_category, true ); foreach ( $products AS $product ) { $productObj = new Product( $product[ 'id_product' ], true, intval( $id_lang ) ); $attributes = attributes( $id_lang, $productObj ); $product->quantity - 什么都不给我。 $product[ 'quantity' ] - 给我:0(但组合应该是 20 qnt)
  • 产品::getQuantity($product['id_product']);它给了我总量。谢谢你。
【解决方案2】:

在模板(Smarty)中你可以使用:

{$product->quantity_all_versions}

{$product.quantity_all_versions}

【讨论】:

    【解决方案3】:

    要使用大小获取数量,我使用高级 -> SQL 管理器

    SELECT DISTINCT CONCAT(ps_product_lang.id_product) AS ID, CONCAT(ps_product_lang.name) AS Nazwa, CONCAT(ps_attribute_lang.name) AS Rozmiar,  CONCAT(ROUND(ps_product_shop.price*1.23,2)) AS Cena, CONCAT(ps_stock_available.quantity) AS Ilość, CONCAT('http://pasujemito.pl/',ps_category_lang.link_rewrite,'/',ps_product_lang.id_product,'-',ps_product_lang.link_rewrite,'.html') AS Link
    FROM  ps_stock_available INNER JOIN ps_product_lang
    USING (id_product) INNER JOIN ps_product_attribute_combination
    USING (id_product_attribute) INNER JOIN ps_attribute_lang
    USING (id_attribute) INNER JOIN ps_product_shop
    USING (id_product) INNER JOIN ps_category_product
    USING (id_product) INNER JOIN ps_category_lang
    USING (id_category)
    WHERE quantity=0 AND id_category NOT IN (1 ,2, 44, 45, 46, 75)  AND (id_product_attribute!=0)
    ORDER BY Nazwa;
    

    或者如果我想看图片链接:

    SELECT DISTINCT CONCAT(ps_product_lang.id_product) AS ID, CONCAT(ps_product_lang.name) AS Nazwa, CONCAT(ps_attribute_lang.name) AS Rozmiar,  CONCAT(ROUND(ps_product_shop.price*1.23,2)) AS Cena, CONCAT(ps_stock_available.quantity) AS Ilość, CONCAT('http://pasujemito.pl/',ps_image.id_image,'-tm_thickbox_default/',ps_product_lang.link_rewrite,'.jpg') AS Zdjęcie
    FROM  ps_stock_available INNER JOIN ps_product_lang
    USING (id_product) INNER JOIN ps_product_attribute_combination
    USING (id_product_attribute) INNER JOIN ps_attribute_lang
    USING (id_attribute) INNER JOIN ps_product_shop
    USING (id_product) INNER JOIN ps_image
    USING (id_product)
    WHERE quantity=0 AND (ps_image.position=1) AND (id_product_attribute!=0)
    ORDER BY Nazwa;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      • 1970-01-01
      • 2016-10-02
      • 1970-01-01
      • 2012-06-03
      • 2014-04-10
      相关资源
      最近更新 更多