[英]drupal 8 commerce 2 - How to unpublish all published products and their products variations programmatically
在每次在我的网站上导入实际分类之前,我需要取消发布所有“活动”(已发布状态 == TRUE)产品和产品变体。 如何以编程方式进行? 我看到了两种方法:
预先感谢您的帮助!
PS 产品数量(有产品变化)~ 25 000 - 30 000 sku
我的解决方案:
取消发布所有产品:
$pids = \Drupal::entityQuery('commerce_product')->condition('status', 1)->execute(); $products = Product::loadMultiple($pids); foreach ($products as $product) { $product->status = 0; $产品->保存(); }
取消发布所有产品变体:
$pvids = \Drupal::entityQuery('commerce_product_variation')->condition('status', 1)->execute(); $product_variations = ProductVariation::loadMultiple($pvids); foreach ($product_variations as $product_var) { $product_var->status = 0; $product_var->保存(); }
也许有更有效的方法来做到这一点? 我会很感激任何提示。
同样的解决方案,只是通过直接查询数据库:
$query = \Drupal::database()->update('commerce_product_field_data');
$query->fields([
'status' => 0
]);
$query->condition('status', 1);
$query->execute();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.