Skip to content

Commit 459c596

Browse files
committed
add eav_attribute_option join for ordering by sort_order column for attributes
1 parent c8cbacc commit 459c596

File tree

3 files changed

+37
-1
lines changed

3 files changed

+37
-1
lines changed

app/code/Magento/Eav/Model/Entity/Attribute/Source/Table.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,13 @@ public function addValueSortToCollection($collection, $dir = \Magento\Framework\
213213
$valueExpr
214214
);
215215

216-
$collection->getSelect()->order("{$attribute->getAttributeCode()} {$dir}");
216+
$this->_attrOptionFactory->create()->addOptionToCollection(
217+
$collection,
218+
$attribute,
219+
$valueExpr
220+
);
221+
222+
$collection->getSelect()->order("{$attribute->getAttributeCode()}_order {$dir}");
217223

218224
return $this;
219225
}

app/code/Magento/Eav/Model/ResourceModel/Entity/Attribute/Option.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,33 @@ public function addOptionValueToCollection($collection, $attribute, $valueExpr)
6161
return $this;
6262
}
6363

64+
/**
65+
* Add Join with option for collection select
66+
*
67+
* @param \Magento\Eav\Model\Entity\Collection\AbstractCollection $collection
68+
* @param \Magento\Eav\Model\Entity\Attribute $attribute
69+
* @param \Zend_Db_Expr $valueExpr
70+
* @return $this
71+
*/
72+
public function addOptionToCollection($collection, $attribute, $valueExpr)
73+
{
74+
$connection = $this->getConnection();
75+
$attributeCode = $attribute->getAttributeCode();
76+
$optionTable1 = $attributeCode . '_option_t1';
77+
$tableJoinCond1 = "{$optionTable1}.option_id={$valueExpr}";
78+
$valueExpr = $connection->getIfNullSql(
79+
"{$optionTable1}.sort_order"
80+
);
81+
82+
$collection->getSelect()->joinLeft(
83+
[$optionTable1 => $this->getTable('eav_attribute_option')],
84+
$tableJoinCond1,
85+
["{$attributeCode}_order" => $valueExpr]
86+
);
87+
88+
return $this;
89+
}
90+
6491
/**
6592
* Retrieve Select for update Flat data
6693
*

app/code/Magento/Eav/Test/Unit/Model/Entity/Attribute/Source/TableTest.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,9 @@ public function testAddValueSortToCollection()
314314
$attrOption->expects($this->once())->method('addOptionValueToCollection')
315315
->with($collection, $this->abstractAttributeMock, $expr)
316316
->willReturnSelf();
317+
$attrOption->expects($this->once())->method('addOptionToCollection')
318+
->with($collection, $this->abstractAttributeMock, $expr)
319+
->willReturnSelf();
317320
$select->expects($this->once())->method('order')->with("{$attributeCode} {$dir}");
318321

319322
$this->assertEquals($this->model, $this->model->addValueSortToCollection($collection, $dir));

0 commit comments

Comments
 (0)