yii2: default order for sort can't pass table name as prefix
What steps will reproduce the problem?
So… I can add additional order
$dataProvider->sort->attributes = array_merge($dataProvider->sort->attributes, [
'anotherModel' => [
'asc' => [$anotherModelTable . '.name' => SORT_ASC],
'desc' => [$anotherModelTable . '.name' => SORT_DESC],
'default' => SORT_ASC,
],
'blockFilter' => [
'asc' => [static::tableName() . '.[[' . 'isActive' . ']]' => SORT_ASC],
'desc' => [static::tableName() . '.[[' . 'isActive' . ']]' => SORT_DESC],
'default' => SORT_ASC,
],
]);
And I wish to add default order in same format
$dataProvider->sort->defaultOrder = [static::tableName() . '.' . 'id' => SORT_DESC];
What is the expected result?
Default order is a id desc
What do you get instead?
SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘0’ in ‘order clause’
https://github.com/yiisoft/yii2/blob/6d10d1f05df9c85ea0ca127bdc6bdc900bc9c6ba/framework/data/Sort.php#L222
$attributeOrders is a
array (
'{{%this_table}}.id' => 3,
)
for case w/o default order and with sort by blockFilter
$attributeOrders is a
Array
(
[blockFilter] => 4
)
Additional info
| Q | A |
|---|---|
| Yii version | v2.0.19-dev |
| PHP version | 7.3.3 |
| Operating system |
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Comments: 22 (9 by maintainers)
My apologies, looks like somehow I’m not able to explain it easy enough. I took a liberty of checking it myself and it absolutely works. So set your data provider like that:
or, if you don’t want two separate things:
Of course you need to have
projectsandjobstables available in the query provided for the data provider.