hi i am reading this magento2 stackexchange
How to Join custom table to customer grid collection and show new column in Grid in Magento2
i could add and show custom column on customer list grid. but even i change custom value on mysql directory, the change does not come up.
table:customer_flag
fk:customer_entity_id
custom_column: flag
my Collection.php is like this
<?php /** * Copyright © 2013-2017 Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace NAMESPACE\MODUENAME\Model\ResourceModel\Customer\Grid; use Magento\Customer\Ui\Component\DataProvider\Document; 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 \Magento\Customer\Model\ResourceModel\Grid\Collection { /** * @inheritdoc */ protected $document = Document::class; /** * Initialize dependencies. * * @param EntityFactory $entityFactory * @param Logger $logger * @param FetchStrategy $fetchStrategy * @param EventManager $eventManager * @param string $mainTable * @param string $resourceModel */ public function __construct( EntityFactory $entityFactory, Logger $logger, FetchStrategy $fetchStrategy, EventManager $eventManager, $mainTable = 'customer_grid_flat', $resourceModel = '\Magento\Customer\Model\ResourceModel\Customer' ) { parent::__construct($entityFactory, $logger, $fetchStrategy, $eventManager, $mainTable, $resourceModel); } protected function _initSelect() { parent::_initSelect(); $this->getSelect()->joinLeft( ['secondTable' => $this->getTable('customer_flag')], 'main_table.entity_id = secondTable.customer_entity_id', ['flag as custom_column'] ); } /** * Modify for website_id code same in location type and location list */ public function addFieldToFilter($field, $condition = null) { if ($field === 'custom_column') { $field = 'secondTable.flag'; } return parent::addFieldToFilter($field, $condition); } }
I THINK... there is customer_grid_flat table as main table but no custom flag on the main table. do i have to add column to customer_grid_flat?
Thanks but it seems like the collection.php is not called during loading customer page.
how can i fix it?
if the function 'initSelect' is called, the problem should be solved.