1
グリッドビューに表示する色々な時間に作成された色付きボールがあります。Yii2 Gridview:複数の列をソートする方法は?
- ボール - として移入
のcreated_at ID、色、:私はボールが新しい順に表示させたいが、私はまた、注文することができるようにしたいデフォルトとして
1, red , 2010-10-09
2, blue , 2010-11-08
3, blue , 2010-09-01
4, red , 2010-06-15
ボールを色で表示するので、私はBallSearchモデルで次の検索機能を設定しました:
public function search()
{
$query = Ball::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort' => [
'attributes' => [
'color',
'created_at',
],
'defaultOrder'=> ['created_at' => SORT_DESC]
],
]);
return $dataProvider;
}
これはある点までは機能しますが、色で並べ替えると、私は分かりやすいように最新の最初のソートを失います。これは、ソート順の前に適用されません取得し、結果はもはや順序付けられ
...
$query = Ball::find()->orderBy(['created_at' => SORT_DESC]);
...
:私は検索クエリに最新の第一の条件を置けば、
2, blue , 2010-11-08
3, blue , 2010-09-01
1, red , 2010-10-09
4, red , 2010-06-15
残念ながら、私は本当にこの結果たいと思いますGridViewの順序付けは効果的ではありません。
複雑な条件を各属性の順序に結びつけることなく、この基本的な二次順序を指定する方法はありますか?
これは一般的な使用例です。
美しい、夢のような作品..ありがとう! – Arth