Yii2排序多个参数URL

时间:2018-03-11 10:18:05

标签: yii yii2

我在yii2中有一个端点,我需要按多个参数排序。我使用ActiveDataProvider。这是enpdoint:

public function actionIndex($client) 
{
        $sort = new Sort([
            'attributes'=> ['name','mail','crdate']
        ]);
        $query = Customer::find()
                ->andWhere(['client' => $client])
                ->orderBy($sort->orders);
        $provider = new ActiveDataProvider(['query' => $query]);
        return $provider->getModels();
}

现在按单个参数进行排序,如下所示: customers?client = 1& sort = mail 工作正常。

我想按多个参数排序。我应该如何在网址中执行此操作?

2 个答案:

答案 0 :(得分:2)

设置

$sort = new Sort([
    'attributes'=> ['name','mail','crdate'],
    'enableMultiSort' => true,
]);

现在,您可以通过将,

分开来传递多个排序列
?sort=name,mail

如果您在名称前添加-,则会降序,否则会升序 如果要将,分隔符更改为其他内容,请在排序对象的separator配置键中进行设置。

答案 1 :(得分:1)

您应该尝试使用Costumer模型的搜索模型

public function search($params)
{
    $query = Costumer::find();

    $dataProvider = new ActiveDataProvider([
        'query' => $query,
    ]);

    $this->load($params);

    if (!$this->validate()) {
        return $dataProvider;
    }

    $query->andFilterWhere([some condition for search]);

    return $dataProvider;
}