Magento 2:如何从数据库中删除订单


10

如何删除在商店中创建的测试订单?我已经打开了数据库,但是找不到订单表。请帮助我删除订单。我正在使用Magento 2的更高版本。

Answers:


8

我建议您避免直接与SQL混淆。

您可以使用任何不错的扩展程序,例如Mageplaza

另一个选择是在根目录上创建脚本并以编程方式删除订单

您可以使用以下代码在根目录下创建文件:

<?php

ini_set('error_reporting', E_ALL);
ini_set("display_errors", "1");

use Magento\Framework\App\Bootstrap;
require 'app/bootstrap.php';

$bootstrap = Bootstrap::create(BP, $_SERVER);
$objectManager = $bootstrap->getObjectManager();
$registry = $objectManager->get('Magento\Framework\Registry');
$state = $objectManager->get('Magento\Framework\App\State');
$state->setAreaCode('frontend');

$ids = array(1,2,3,4); // your order_id 

foreach ($ids as $id) {

    $order = $objectManager->create('Magento\Sales\Model\Order')->load($id);
    $registry->register('isSecureArea','true');
    $order->delete();
    $registry->unregister('isSecureArea');
    echo "order deleted";

}

编辑我

如果要使用脚本删除订单,可以将上述代码放在magento的根文件夹中。之后,可以在浏览器中单击URL。

例如,您的magento安装在www.example.com上,文件名是deleteOrder.php可以通过以下方式运行:

 www.example.com/deleteOrder.php

如果要安装扩展程序,则需要

- Extract folder at [magentoRoot]/app/code
- Open terminal and run cd [magentoRoot] //change to root dir
- php bin/magento setup:upgrade
- php bin/magento cache:flush
- php bin/magento setup:static-content:deploy (only required in production mode)

您也可以在官方网站上找到文档


但这不是免费的,对吗?
伊丽莎·塞努

我共享的模块是免费的,如果您不想使用该模块,只需使用一次脚本即可。
Pawan

因为一旦删除了虚拟订单,我们将很少使用该扩展名。
Pawan

欢迎@ElishaSenoo。您要使用模块还是脚本?
Pawan

我现在要使用模块。
伊丽莎·塞努

4

您可以按照以下SQL删除数据库中的所有订单,订单历史记录,装运,发票,贷项凭证,报价,报价项目:

SET FOREIGN_KEY_CHECKS=0;

#清除订单历史记录

TRUNCATE TABLE `sales_bestsellers_aggregated_daily`;
TRUNCATE TABLE `sales_bestsellers_aggregated_monthly`;
TRUNCATE TABLE `sales_bestsellers_aggregated_yearly`;

#清洁订单信息

TRUNCATE TABLE `sales_creditmemo`;
TRUNCATE TABLE `sales_creditmemo_comment`;
TRUNCATE TABLE `sales_creditmemo_grid`;
TRUNCATE TABLE `sales_creditmemo_item`;
TRUNCATE TABLE `sales_invoice`;
TRUNCATE TABLE `sales_invoiced_aggregated`;
TRUNCATE TABLE `sales_invoiced_aggregated_order`;
TRUNCATE TABLE `sales_invoice_comment`;
TRUNCATE TABLE `sales_invoice_grid`;
TRUNCATE TABLE `sales_invoice_item`;
TRUNCATE TABLE `sales_order`;
TRUNCATE TABLE `sales_order_address`;
TRUNCATE TABLE `sales_order_aggregated_created`;
TRUNCATE TABLE `sales_order_aggregated_updated`;
TRUNCATE TABLE `sales_order_grid`;
TRUNCATE TABLE `sales_order_item`;
TRUNCATE TABLE `sales_order_payment`;
TRUNCATE TABLE `sales_order_status_history`;
TRUNCATE TABLE `sales_order_tax`;
TRUNCATE TABLE `sales_order_tax_item`;
TRUNCATE TABLE `sales_payment_transaction`;
TRUNCATE TABLE `sales_refunded_aggregated`;
TRUNCATE TABLE `sales_refunded_aggregated_order`;
TRUNCATE TABLE `sales_shipment`;
TRUNCATE TABLE `sales_shipment_comment`;
TRUNCATE TABLE `sales_shipment_grid`;
TRUNCATE TABLE `sales_shipment_item`;
TRUNCATE TABLE `sales_shipment_track`;
TRUNCATE TABLE `sales_shipping_aggregated`;
TRUNCATE TABLE `sales_shipping_aggregated_order`;

清洁购物车信息

TRUNCATE TABLE `quote`;
TRUNCATE TABLE `quote_address`;
TRUNCATE TABLE `quote_address_item`;
TRUNCATE TABLE `quote_id_mask`;
TRUNCATE TABLE `quote_item`;
TRUNCATE TABLE `quote_item_option`;
TRUNCATE TABLE `quote_payment`;
TRUNCATE TABLE `quote_shipping_rate`;

重置索引(如果您希望订单号重新回到1

TRUNCATE TABLE sequence_invoice_1;
TRUNCATE TABLE sequence_order_1;
TRUNCATE TABLE sequence_shipment_1;
TRUNCATE TABLE sequence_creditmemo_1;


SET FOREIGN_KEY_CHECKS=1;

在执行上述操作之前,请备份数据库。

希望这会有所帮助。


如果我要删除特定的订单而不是全部删除怎么办?
伊丽莎·塞努

您检查这些实体的实体ID,并相应地删除它们。另外,如果您想使用扩展名,则可以尝试github.com/mageplaza/magento-2-delete-orders
Sukumar Gorai

我希望扩展是免费的吗?
伊丽莎·塞努

扩展名URL来自GitHub。因此可以免费下载。
Sukumar Gorai

我看到了,我只是想确定一下。谢谢
Elisha Senoo '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.