หลังจากคำตอบ@Shoaib มูนีร์และ@Rk Rathodตารางเหล่านี้จะไม่อัปเดตบนรันไทม์ดังนั้นคุณจำเป็นต้องเรียกใช้รีเฟรชสถิติจากReports -> Statistics -> Refresh Statistics
ทุกครั้ง แต่ถ้าคุณไม่ต้องการรีเฟรชสถิติด้วยตนเองทุกครั้งดังนั้นคุณอาจตั้งค่า cron เพื่อให้มันจะรีเฟรชสถิติโดยอัตโนมัติ
ก่อนอื่นคุณต้องส่งอาร์กิวเมนต์reportTypesไปที่คลาส cron ของคุณโดยใช้ di.xml เช่นด้านล่าง (ฉันได้ผ่านการขัดแย้งทั้งหมดที่คุณอาจผ่านตามความต้องการของคุณ)
<type name="Vendor\Module\Cron\CronFile">
<arguments>
<argument name="reportTypes" xsi:type="array">
<item name="sales" xsi:type="string">Magento\Sales\Model\ResourceModel\Report\Order</item>
<item name="tax" xsi:type="string">Magento\Tax\Model\ResourceModel\Report\Tax</item>
<item name="shipping" xsi:type="string">Magento\Sales\Model\ResourceModel\Report\Shipping</item>
<item name="invoiced" xsi:type="string">Magento\Sales\Model\ResourceModel\Report\Invoiced</item>
<item name="refunded" xsi:type="string">Magento\Sales\Model\ResourceModel\Report\Refunded</item>
<item name="coupons" xsi:type="string">Magento\SalesRule\Model\ResourceModel\Report\Rule</item>
<item name="bestsellers" xsi:type="string">Magento\Sales\Model\ResourceModel\Report\Bestsellers</item>
<item name="viewed" xsi:type="string">Magento\Reports\Model\ResourceModel\Report\Product\Viewed</item>
</argument>
</arguments>
</type>
จากนั้นในไฟล์ cron ของคุณควรเป็นเช่นนี้
<?php
namespace Vendor\Module\Cron;
use Magento\Reports\Model\ResourceModel\Refresh\Collection;
class CronFile extends Collection
{
protected $logger;
protected $reportTypes;
public function __construct(
\Magento\Framework\Data\Collection\EntityFactory $entityFactory,
\Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate,
\Magento\Reports\Model\FlagFactory $reportsFlagFactory,
\Psr\Log\LoggerInterface $logger,
array $reportTypes
) {
$this->logger = $logger;
$this->reportTypes = $reportTypes;
parent::__construct($entityFactory,$localeDate,$reportsFlagFactory);
}
/**
* @return $this
*/
public function execute()
{
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
try {
$codes = $this->loadData();
foreach ($codes->_items as $codek=>$codev) {
$objectManager->create($this->reportTypes[$codek])->aggregate();
}
} catch (\Magento\Framework\Exception\LocalizedException $e) {
$this->logger->critical($e->getMessage());
} catch (\Exception $e) {
$this->logger->critical($e->getMessage());
}
return $this;
}
}
ฉันหวังว่ามันจะช่วย!