Skip to main content

How to show Product Attribute name in column?

I Have a custom table that saves product attribute Id. For E.g

id, color_id, brand_id
1,123,122

Now I wanted to show attribute option value( Color name, brand name) on Admin grid of custom module.

I have added new columns in _initSelect() function in collection.php file as follow.

$this->getSelect()->columns(array(
         'brand' => new \Zend_Db_Expr('(select value from eav_attribute_option_value where  option_id = brand_id)')
     ));
$this->getSelect()->columns(array(
         'color' => new \Zend_Db_Expr('(select value from eav_attribute_option_value where  option_id = color_id)')
     ));

But, After adidng above I am not getting values in grid.

<column name="brand">
    <settings>
        <filter>text</filter>
        <label translate="true">Brand</label>
        <editor>
            <editorType>text</editorType>
            <validation>
                <rule name="required-entry" xsi:type="boolean">false</rule>
            </validation>
        </editor>
    </settings>
</column>

<column name="color">
    <settings>
        <filter>text</filter>
        <label translate="true">Brand</label>
        <editor>
            <editorType>text</editorType>
            <validation>
                <rule name="required-entry" xsi:type="boolean">false</rule>
            </validation>
        </editor>
    </settings>
</column>

How can we display name instead of attribute Id in grid?