在Magento 2 Admin Grid中显示自定义查询数据

发布于 2025-02-11 15:53:20 字数 3915 浏览 1 评论 0原文

我创建了一个自定义模块,该模块将与产品相关的一些数据存储在自定义集合中。

现在,要将其显示为Magento 2 Admin中的报告,我需要创建一个自定义查询,以与客户和产品表一起连接并执行一些汇总功能,例如count由产品分组。

有什么办法可以使用自定义SQL查询并将整个结果传递到网格中,并且将相关的列名称输入并显示在网格中?

<?xml version="1.0"?>
<listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
    <argument name="data" xsi:type="array">
        <item name="js_config" xsi:type="array">
            <item name="provider" xsi:type="string">bargain_offer_listing.bargain_offer_listing_data_source</item>
            <item name="deps" xsi:type="string">bargain_offer_listing.bargain_offer_listing_data_source</item>
            <item name="spinner" xsi:type="string">bargain_offer_listing_columns</item>
        </item>
    </argument>
    <listingToolbar name="listing_top">
        <bookmark name="bookmarks"/>
        <columnsControls name="columns_controls"/>
        <filterSearch name="fulltext"/>
        <filters name="listing_filters"/>
        <paging name="listing_paging"/>
    </listingToolbar>
    <dataSource name="bargain_offer_listing_data_source">
        <argument name="dataProvider" xsi:type="configurableObject">
            <argument name="class" xsi:type="string">MyModule\Bargain\Ui\DataProvider\OfferListingProvider
            </argument>
            <argument name="name" xsi:type="string">bargain_offer_listing_data_source</argument>
            <argument name="primaryFieldName" xsi:type="string">entity_id</argument>
            <argument name="requestFieldName" xsi:type="string">entity_id</argument>
            <argument name="data" xsi:type="array">
                <item name="update_url" xsi:type="url" path="mui/index/render"/>
                <item name="storageConfig" xsi:type="array">
                    <item name="indexField" xsi:type="string">entity_id</item>
                </item>
            </argument>
        </argument>
    </dataSource>
    <columns name="bargain_offer_listing_columns">
        <column name="entity_id">
            <settings>
                <filter>textRange</filter>
                <label translate="true">ID</label>
            </settings>
        </column>
        <column name="product_sku">
            <settings>
                <filter>text</filter>
                <label translate="true">Product Sku</label>
            </settings>
        </column>
        <column name="product_name">
            <settings>
                <filter>text</filter>
                <bodyTmpl>ui/grid/cells/text</bodyTmpl>
                <label translate="true">Product Name</label>
            </settings>
        </column>
        <column name="number_of_buyers">
            <settings>
                <filter>text</filter>
                <label translate="true">No of buyers</label>
            </settings>
        </column>
        <column name="times_bought">
            <settings>
                <filter>text</filter>
                <label translate="true">Times Bought</label>
            </settings>
        </column>
    </columns>
</listing>

这是我的数据提供商类


use Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider;

class OfferListingProvider extends DataProvider
{

}

,但我不知道如何利用它。任何建议或指南都将受到赞赏。

I have created a custom module which stores some data related to the product in a custom collection.

Now to show it as a report in the Magento 2 admin, I need to create a custom query to join it with the customer and product tables and do some aggregate functionality such as count grouped by the product.

Is there a way we can do that using custom SQL query and pass the whole result in the grid and it takes the relevant column names and shows it in the grid?

<?xml version="1.0"?>
<listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
    <argument name="data" xsi:type="array">
        <item name="js_config" xsi:type="array">
            <item name="provider" xsi:type="string">bargain_offer_listing.bargain_offer_listing_data_source</item>
            <item name="deps" xsi:type="string">bargain_offer_listing.bargain_offer_listing_data_source</item>
            <item name="spinner" xsi:type="string">bargain_offer_listing_columns</item>
        </item>
    </argument>
    <listingToolbar name="listing_top">
        <bookmark name="bookmarks"/>
        <columnsControls name="columns_controls"/>
        <filterSearch name="fulltext"/>
        <filters name="listing_filters"/>
        <paging name="listing_paging"/>
    </listingToolbar>
    <dataSource name="bargain_offer_listing_data_source">
        <argument name="dataProvider" xsi:type="configurableObject">
            <argument name="class" xsi:type="string">MyModule\Bargain\Ui\DataProvider\OfferListingProvider
            </argument>
            <argument name="name" xsi:type="string">bargain_offer_listing_data_source</argument>
            <argument name="primaryFieldName" xsi:type="string">entity_id</argument>
            <argument name="requestFieldName" xsi:type="string">entity_id</argument>
            <argument name="data" xsi:type="array">
                <item name="update_url" xsi:type="url" path="mui/index/render"/>
                <item name="storageConfig" xsi:type="array">
                    <item name="indexField" xsi:type="string">entity_id</item>
                </item>
            </argument>
        </argument>
    </dataSource>
    <columns name="bargain_offer_listing_columns">
        <column name="entity_id">
            <settings>
                <filter>textRange</filter>
                <label translate="true">ID</label>
            </settings>
        </column>
        <column name="product_sku">
            <settings>
                <filter>text</filter>
                <label translate="true">Product Sku</label>
            </settings>
        </column>
        <column name="product_name">
            <settings>
                <filter>text</filter>
                <bodyTmpl>ui/grid/cells/text</bodyTmpl>
                <label translate="true">Product Name</label>
            </settings>
        </column>
        <column name="number_of_buyers">
            <settings>
                <filter>text</filter>
                <label translate="true">No of buyers</label>
            </settings>
        </column>
        <column name="times_bought">
            <settings>
                <filter>text</filter>
                <label translate="true">Times Bought</label>
            </settings>
        </column>
    </columns>
</listing>

This is my data provider class


use Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider;

class OfferListingProvider extends DataProvider
{

}

But I do not know how to utilize this. Any suggestions or guides is appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文