php 如何从 magento 中删除测试订单
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/4526914/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
how can I delete test order from magento
提问by mjdevloper
I have made a website in magento. Now it is live and I want to delete the all test order. I know there are some table in all these order are stored. but I don't know the name of those table. If some body has any script which can delete the all the order data.
我在 magento 中创建了一个网站。现在它已上线,我想删除所有测试订单。我知道有一些表按所有这些顺序存储。但我不知道那些表的名字。如果某个机构有任何可以删除所有订单数据的脚本。
Please give me or please mention the name of all the tables which stores the order information
请给我或请提及存储订单信息的所有表的名称
回答by Alireza Eliaderani
- Go to admin>sales>orders
- Write down your test orders incremental ids, for example 100000001,100000002,100000003,100000111,100000112,100000199
- now create a php file in magento root directory and name it: remove_test_orders.php
Paste the code below:
require 'app/Mage.php'; Mage::app('admin')->setUseSessionInUrl(false); //replace your own orders numbers here: $test_order_ids=array( '100000001', '100000002', '100000003', '100000111', '100000112', '100000199', ); foreach($test_order_ids as $id){ try{ Mage::getModel('sales/order')->loadByIncrementId($id)->delete(); echo "order #".$id." is removed".PHP_EOL; }catch(Exception $e){ echo "order #".$id." could not be remvoved: ".$e->getMessage().PHP_EOL; } } echo "complete.";
Now go to command line and run:
php remove_test_orders.php
At the end, delete remove_test_orders.php.
- 转到管理>销售>订单
- 写下您的测试订单增量 ID,例如 100000001,100000002,100000003,100000111,100000112,100000199
- 现在在 magento 根目录中创建一个 php 文件并将其命名为:remove_test_orders.php
粘贴下面的代码:
require 'app/Mage.php'; Mage::app('admin')->setUseSessionInUrl(false); //replace your own orders numbers here: $test_order_ids=array( '100000001', '100000002', '100000003', '100000111', '100000112', '100000199', ); foreach($test_order_ids as $id){ try{ Mage::getModel('sales/order')->loadByIncrementId($id)->delete(); echo "order #".$id." is removed".PHP_EOL; }catch(Exception $e){ echo "order #".$id." could not be remvoved: ".$e->getMessage().PHP_EOL; } } echo "complete.";
现在转到命令行并运行:
php remove_test_orders.php
最后,删除remove_test_orders.php。
回答by urfusion
The above answer is too old and there is drawback of this answer that it doesn't empty payment tables so there is a chance of legacy.
you can use below code it will remove payment information also.
上面的答案太旧了,这个答案的缺点是它不会清空付款表,因此有可能遗留问题。
您可以使用以下代码,它也将删除付款信息。
SET FOREIGN_KEY_CHECKS=0;
TRUNCATE `sales_flat_creditmemo`;
TRUNCATE `sales_flat_creditmemo_comment`;
TRUNCATE `sales_flat_creditmemo_grid`;
TRUNCATE `sales_flat_creditmemo_item`;
TRUNCATE `sales_flat_invoice`;
TRUNCATE `sales_flat_invoice_comment`;
TRUNCATE `sales_flat_invoice_grid`;
TRUNCATE `sales_flat_invoice_item`;
TRUNCATE `sales_flat_order`;
TRUNCATE `sales_flat_order_address`;
TRUNCATE `sales_flat_order_grid`;
TRUNCATE `sales_flat_order_item`;
TRUNCATE `sales_flat_order_payment`;
TRUNCATE `sales_flat_order_status_history`;
TRUNCATE `sales_flat_quote`;
TRUNCATE `sales_flat_quote_address`;
TRUNCATE `sales_flat_quote_address_item`;
TRUNCATE `sales_flat_quote_item`;
TRUNCATE `sales_flat_quote_item_option`;
TRUNCATE `sales_flat_quote_payment`;
TRUNCATE `sales_flat_quote_shipping_rate`;
TRUNCATE `sales_flat_shipment`;
TRUNCATE `sales_flat_shipment_comment`;
TRUNCATE `sales_flat_shipment_grid`;
TRUNCATE `sales_flat_shipment_item`;
TRUNCATE `sales_flat_shipment_track`;
TRUNCATE `sales_invoiced_aggregated`;
TRUNCATE `sales_invoiced_aggregated_order`;
TRUNCATE `sales_order_aggregated_created`;
TRUNCATE `sendfriend_log`;
TRUNCATE `tag`;
TRUNCATE `tag_relation`;
TRUNCATE `tag_summary`;
TRUNCATE `wishlist`;
TRUNCATE `log_quote`;
TRUNCATE `report_event`;
ALTER TABLE `sales_flat_creditmemo` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_creditmemo_comment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_creditmemo_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_creditmemo_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice_comment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_address` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_payment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_status_history` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item_option` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_payment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_shipping_rate` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_comment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_track` AUTO_INCREMENT=1;
ALTER TABLE `sales_invoiced_aggregated` AUTO_INCREMENT=1;
ALTER TABLE `sales_invoiced_aggregated_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_aggregated_created` AUTO_INCREMENT=1;
ALTER TABLE `sendfriend_log` AUTO_INCREMENT=1;
ALTER TABLE `tag` AUTO_INCREMENT=1;
ALTER TABLE `tag_relation` AUTO_INCREMENT=1;
ALTER TABLE `tag_summary` AUTO_INCREMENT=1;
ALTER TABLE `wishlist` AUTO_INCREMENT=1;
ALTER TABLE `log_quote` AUTO_INCREMENT=1;
ALTER TABLE `report_event` AUTO_INCREMENT=1;
SET FOREIGN_KEY_CHECKS=1;
回答by Renon Stewart
Take a look at How to delete orders from Magento
<?php
$mageFilename = 'app/Mage.php';
require_once $mageFilename;
Varien_Profiler::enable();
Mage::setIsDeveloperMode(true);
ini_set('display_errors', 1);
umask(0);
Mage::app('default');
Mage::register('isSecureArea', 1);
//until here you gained access to the Magento models. The rest is custom code
$orderId = 156;//put here the id of the order you want to delete. THE ONE FROM THE DATABASE NOT THE INCREMENT_ID
$order = Mage::getModel('sales/order')->load($orderId);
$invoices = $order->getInvoiceCollection();
foreach ($invoices as $invoice){
$invoice->delete();
}
$creditnotes = $order->getCreditmemosCollection();
foreach ($creditnotes as $creditnote){
$creditnote->delete();
}
$shipments = $order->getShipmentsCollection();
foreach ($shipments as $shipment){
$shipment->delete();
}
$order->delete();
?>
回答by useless
I created an open source commandline tool
我创建了一个开源命令行工具
you can use it like this:
你可以这样使用它:
#delete order by increment id
php -f shell/delete-order.php -- --increment-id 100000001
#test delete order by increment id (wont actually delete it)
php -f shell/delete-order.php -- --dry-run --order-id 32
https://github.com/mauricioprado00/magento-delete-order/releases
https://github.com/mauricioprado00/magento-delete-order/releases
回答by ccondrup
I setup a repository for maintaining simple SQL scripts to run before launching a new Magento site. So far they can help:
我设置了一个存储库来维护简单的 SQL 脚本,以便在启动新的 Magento 站点之前运行。到目前为止,他们可以提供帮助:
- empty test data from Mage; orders, customers, reports, logs etc.
- empty test data from various extensions
- set desired IDs for next order, invoice, shipment and creditmemos
- 来自 Mage 的空测试数据;订单、客户、报告、日志等。
- 来自各种扩展的空测试数据
- 为下一个订单、发票、发货和贷项凭证设置所需的 ID
https://github.com/ccondrup/mage-reset
Help improve them!
回答by Abubakar Siddiq Ango
Almost all the previous answers have problem with Foreign key Constraint or wrong table names. I was able to achieve the deletion on a Magento v 1.9.1.0 CE using the SQL below, I modified the SQL given in previous answers:
几乎所有以前的答案都有外键约束或错误的表名问题。我能够使用下面的 SQL 在 Magento v 1.9.1.0 CE 上实现删除,我修改了之前答案中给出的 SQL:
SET FOREIGN_KEY_CHECKS=0;
TRUNCATE `mg_sales_flat_creditmemo`;
TRUNCATE `mg_sales_flat_creditmemo_comment`;
TRUNCATE `mg_sales_flat_creditmemo_grid`;
TRUNCATE `mg_sales_flat_creditmemo_item`;
TRUNCATE `mg_sales_flat_invoice`;
TRUNCATE `mg_sales_flat_invoice_comment`;
TRUNCATE `mg_sales_flat_invoice_grid`;
TRUNCATE `mg_sales_flat_invoice_item`;
TRUNCATE `mg_sales_flat_order`;
TRUNCATE `mg_sales_flat_order_address`;
TRUNCATE `mg_sales_flat_order_grid`;
TRUNCATE `mg_sales_flat_order_item`;
TRUNCATE `mg_sales_flat_order_payment`;
TRUNCATE `mg_sales_flat_order_status_history`;
TRUNCATE `mg_sales_flat_quote`;
TRUNCATE `mg_sales_flat_quote_address`;
TRUNCATE `mg_sales_flat_quote_address_item`;
TRUNCATE `mg_sales_flat_quote_item`;
TRUNCATE `mg_sales_flat_quote_item_option`;
TRUNCATE `mg_sales_flat_quote_payment`;
TRUNCATE `mg_sales_flat_quote_shipping_rate`;
TRUNCATE `mg_sales_flat_shipment`;
TRUNCATE `mg_sales_flat_shipment_comment`;
TRUNCATE `mg_sales_flat_shipment_grid`;
TRUNCATE `mg_sales_flat_shipment_item`;
TRUNCATE `mg_sales_flat_shipment_track`;
TRUNCATE `mg_sales_invoiced_aggregated`;
TRUNCATE `mg_sales_invoiced_aggregated_order`;
TRUNCATE `mg_sales_order_aggregated_created`;
TRUNCATE `mg_sendfriend_log`;
TRUNCATE `mg_tag`;
TRUNCATE `mg_tag_relation`;
TRUNCATE `mg_tag_summary`;
TRUNCATE `mg_wishlist`;
TRUNCATE `mg_log_quote`;
TRUNCATE `mg_report_event`;
ALTER TABLE `mg_sales_flat_creditmemo` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_flat_creditmemo_comment` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_flat_creditmemo_grid` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_flat_creditmemo_item` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_flat_invoice` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_flat_invoice_comment` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_flat_invoice_grid` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_flat_invoice_item` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_flat_order` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_flat_order_address` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_flat_order_grid` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_flat_order_item` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_flat_order_payment` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_flat_order_status_history` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_flat_quote` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_flat_quote_address` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_flat_quote_address_item` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_flat_quote_item` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_flat_quote_item_option` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_flat_quote_payment` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_flat_quote_shipping_rate` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_flat_shipment` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_flat_shipment_comment` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_flat_shipment_grid` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_flat_shipment_item` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_flat_shipment_track` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_invoiced_aggregated` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_invoiced_aggregated_order` AUTO_INCREMENT=1;
ALTER TABLE `mg_sales_order_aggregated_created` AUTO_INCREMENT=1;
ALTER TABLE `mg_sendfriend_log` AUTO_INCREMENT=1;
ALTER TABLE `mg_tag` AUTO_INCREMENT=1;
ALTER TABLE `mg_tag_relation` AUTO_INCREMENT=1;
ALTER TABLE `mg_tag_summary` AUTO_INCREMENT=1;
ALTER TABLE `mg_wishlist` AUTO_INCREMENT=1;
ALTER TABLE `mg_log_quote` AUTO_INCREMENT=1;
ALTER TABLE `mg_report_event` AUTO_INCREMENT=1;
SET FOREIGN_KEY_CHECKS=1;
Remember to change mg_
to your table prefix.
请记住更改mg_
为您的表前缀。
回答by Vivek Khandelwal
Create a file in the root directory and paste the following code.
It will remove all the orders from admin grid!
<?php
/**
* @author Dejan Radic <[email protected]>
*/
if (version_compare(phpversion(), '5.2.0', '<')===true) {
echo '<div style="font:12px/1.35em arial, helvetica, sans-serif;"><div style="margin:0 0 25px 0; border-bottom:1px solid #ccc;"><h3 style="margin:0; font-size:1.7em; font-weight:normal; text-transform:none; text-align:left; color:#2f2f2f;">Whoops, it looks like you have an invalid PHP version.</h3></div><p>Magento supports PHP 5.2.0 or newer. <a href="http://www.magentocommerce.com/install" target="">Find out</a> how to install</a> Magento using PHP-CGI as a work-around.</p></div>';
exit;
}
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);
$mageFilename = 'app/Mage.php';
if (!file_exists($mageFilename)) {
echo $mageFilename." was not found";
exit;
}
require_once $mageFilename;
Mage::app();
$executionPath = null;
/*
* determine Magento Edition
*/
if (file_exists('LICENSE_EE.txt')) {
$edition = 'EE';
}elseif (file_exists('LICENSE_PRO.html')) {
$edition = 'PE';
} else {
$edition = 'CE';
}
if(($edition=='EE' && version_compare(Mage::getVersion(), '1.11.0.0.', '<')===true)
|| ($edition=='PE' && version_compare(Mage::getVersion(), '1.11.0.0.', '<')===true)
|| ($edition=='CE' && version_compare(Mage::getVersion(), '1.6.0.0.', '<')===true)
){
$executionPath = 'old';
} else {
$executionPath = 'new';
}
$xpathEntity = 'global/models/sales_entity/entities//table';
if ($executionPath == 'old') {
$xpathResource = 'global/models/sales_mysql4/entities//table';
} else {
$xpathResource = 'global/models/sales_resource/entities//table';
}
$salesEntitiesConf = array_merge(
Mage::getSingleton('core/config')->init()->getXpath($xpathEntity),
Mage::getSingleton('core/config')->init()->getXpath($xpathResource)
);
$resource = Mage::getSingleton('core/resource');
$connection = $resource->getConnection('core_write');
/*
* If you want delete System/Order Statuses (Status and State) you
* should comments below lines (46-51)
*/
$skipTables = array (
$resource->getTableName('sales_order_status'),
$resource->getTableName('sales_order_status_state'),
$resource->getTableName('sales_order_status_label')
);
$salesEntitiesConf = array_diff($salesEntitiesConf, $skipTables);
/*
Multiple RDBMS Support in Magento CE 1.6+ / EE 1.11+
http://www.magentocommerce.com/images/uploads/RDBMS_Guide2.pdf
2.2. Adapters:
... The new Varien_DB_Adapter_Interface was added to sign a contract that all
developed adapters must execute in order to get Magento working on an actual
database. The interface describes the list of methods and constants that can be used by resource models...
Used below in the loop:
* If $executionPath == 'old'
* Varien_Db_Adapter_Pdo_Mysql::showTableStatus()
* Varien_Db_Adapter_Pdo_Mysql::truncate()
* Else
* Varien_Db_Adapter_Interface::isTableExists()
* Varien_Db_Adapter_Interface::truncateTable()
*/
while ($table = current($salesEntitiesConf) ){
$table = $resource->getTableName($table);
if ($executionPath == 'old') {
$isTableExists = $connection->showTableStatus($table);
} else {
$isTableExists = $connection->isTableExists($table);
}
if ($isTableExists) {
try {
if ($executionPath == 'old') {
$connection->truncate($table);
} else {
$connection->truncateTable($table);
}
printf('Successfully truncated the <i style="color:green;">%s</i> table.<br />', $table);
} catch(Exception $e) {
printf('Error <i style="color:red;">%s</i> occurred truncating the <i style="color:red;">%s</i> table.<br />', $e->getMessage(), $table);
}
}
next($salesEntitiesConf);
}
exit('All done...');
?>
回答by Asif Mehmood
Simply got your database phpMyadmin and then open the table sales_flat_order
and then simply remove tha data from this tabel and your test orders will be cleared. No need of any code or commands. cool.
只需获取您的数据库 phpMyadmin,然后打开表格sales_flat_order
,然后简单地从该表格中删除数据,您的测试订单将被清除。不需要任何代码或命令。凉爽的。
回答by user1801605
With this extension, not only it will delete the order(s), invoice(s), shipment(s), credit memo(s), RMA(s), but also it will revert back all the information such as collected tax, deleted products back to inventory and reset Increment IDs.
使用此扩展程序,它不仅会删除订单、发票、发货、贷项通知单、RMA,还会还原所有信息,例如已收税款、删除的产品回到库存并重置增量 ID。
If you make a mistake when creating the order/invoice/shipment/credit memo/RMA and want to delete it, then this extension can do very well.
如果您在创建订单/发票/发货/贷项凭证/RMA 时出错并想删除它,那么此扩展程序可以做得很好。
There is a test site where you can try it first and see if it works for you or not.
有一个测试站点,您可以先尝试一下,看看它是否适合您。
http://www.magentocommerce.com/magento-connect/ultimate-delete-order.html
http://www.magentocommerce.com/magento-connect/ultimate-delete-order.html