如何在 yii2 中设置默认按值排序


How to set default sort by value in yii2?

是否可以使用不使用列名的值进行排序?

例如

$dataProvider = new ActiveDataProvider([
        'query' => $query,
        'sort'=> ['defaultOrder' => ['id' => 100]]
    ]);

我知道我可以使用控制器或添加参数轻松做到这一点,但我想使用search()函数来做到这一点。

默认情况下,排序与列名一起使用,因此,我正在寻找按值排序的新解决方法。

您可以使用 setSort

    $dataProvider->setSort([
         'defaultOrder' => [ 'id' => SORT_ASC],
    ]);

否则,您的请求不满足此格式,因为 in 不基于列和order_type数组。

您可以尝试使用 ->orderBy(' 字段(id, '100', '300', '500')') 覆盖此设置;

$dataProvider->query->orderBy(' FIELD(id, '100', '300', '500')')