【问题标题】:Magento 2 - Select with group_concat in Left JoinMagento 2 - 在左连接中使用 group_concat 选择
【发布时间】:2019-05-19 22:22:29
【问题描述】:

我目前正在尝试将订单产品中的 SKU 放入订单网格并在后端过滤。它已经在工作,但仅适用于一个 SKU,而不是订单的所有 SKU。我的控制器如下所示:

<?php
namespace Vendor\Module\Model\ResourceModel\Order\Grid;

use Magento\Sales\Model\ResourceModel\Order\Grid\Collection as OriginalCollection;
use Magento\Framework\Data\Collection\Db\FetchStrategyInterface as FetchStrategy;
use Magento\Framework\Data\Collection\EntityFactoryInterface as EntityFactory;
use Magento\Framework\Event\ManagerInterface as EventManager;
use Psr\Log\LoggerInterface as Logger;

class Collection extends OriginalCollection
{
    protected $_authSession;
    public function __construct(
       EntityFactory $entityFactory,
       Logger $logger,
       FetchStrategy $fetchStrategy,
       EventManager $eventManager,
       \Magento\Backend\Model\Auth\Session $authSession
      )
    {        
       $this->_authSession = $authSession;
       parent::__construct($entityFactory, $logger, $fetchStrategy, $eventManager);
    }

    protected function _renderFiltersBefore() {
        $user = $this->_authSession->getUser();
        $joinTable = $this->getTable('sales_order_item');
        $this->getSelect()->joinLeft($joinTable, 'main_table.entity_id = sales_order_item.order_id', ['sku'])->group('entity_id');
        parent::_renderFiltersBefore();
    }
}

现在我的问题:是否可以将左连接中的数据选择为 group_concat?如果是这样,请给我一个关于如何做到这一点的提示。 我试过这样的

$this->getSelect()->joinLeft($joinTable, 'main_table.entity_id = sales_order_item.order_id', ['sku' => new \Zend_Db_Expr('group_concat(`sales_order_item`.sku SEPARATOR ",")')]);

但是没有用。

【问题讨论】:

    标签: mysql magento2


    【解决方案1】:

    自己解决了。缺少的是GROUP BY 语句,所以我在查询中添加了-&gt;group('entity_id')。我也删除了分隔符。

    $this->getSelect()->joinLeft($joinTable, 'main_table.entity_id = sales_order_item.order_id', ['sku' => new \Zend_Db_Expr('group_concat(`sales_order_item`.sku)')])->group('entity_id');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-27
      • 2017-11-28
      • 2013-08-25
      • 2015-05-28
      • 2018-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多