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.