我在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 工作正常。
我想按多个参数排序。我应该如何在网址中执行此操作?
答案 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;
}