2016-04-07 4 views
2

this questionを展開したいと思います。Yii2 REST GETリクエストを送信するときに関連テーブルフィールドを並べ替える方法

基本的に私はusersエンドポイントを持っています。しかし、私はまた、関連するprofilesテーブルからデータを返しています。私はプロファイルで拡張していない、私はいつもそれを返すしたい。だから私はこのような分野の方法があります:私はprofile.created_atフィールドとuser.statusによってソート要求と需要をGET行うと

public function fields() 
{ 
    $fields = parent::fields(); 
    $fields[] = 'profile'; 
    return $fields; 
} 

を、それがprofile.created_atでソートしません。

GETのV1 /ユーザー?ソート= -profile.created_at、状況

は何とかこれを達成することはできますか?

これは私の現在のコードです:あなたはActiveDataProviderの '並べ替え' パラメータをオーバーライドしている

/** @var $query ActiveQuery */ 
$query = User::find(); 

// get data from profile table 
$query->innerJoinWith('profile'); 

// add conditions that should always apply here 
$dataProvider = new ActiveDataProvider([ 
    'query' => $query, 
    'sort' => ['defaultOrder' => ['id' => SORT_DESC]], 
    'pagination' => [ 
     'pageSize' => 10, 
    ], 
]); 

return $dataProvider; 
+0

Yii2スコープを参照する必要があります。 – Govind

答えて

1

。 Sortオブジェクトのデフォルトの動作を維持してdefaultOrderプロパティを変更するには、次のようなインスタンスを作成します。

$sort = new \yii\data\Sort([ 
    'attributes' => [ 
     'profile.created_at', 
    ], 
    'defaultOrder' => ['id' => SORT_DESC], 
]); 

// add conditions that should always apply here 
$dataProvider = new ActiveDataProvider([ 
    'query' => $query, 
    'sort' => $sort, 
    'pagination' => [ 
     'pageSize' => 10, 
    ], 
]); 
+0

これは上に掲載された私のコードとは何も変わりません。私はまだprofile.created_atでソートすることはできません –

+0

どのように曖昧さを解消しますか?私はusersテーブルのcreated_atとprofileテーブルのcreated_atを持っていて、profile.created_atでソートしたいと思います。これは動作しません: '$ sort = new \ yii \ data \ Sort(['属性' => [ 'profile.created_at'、 ]、 'defaultOrder' => ['profile.created_at' => SORT_DESC ]、 ]); 'それは未定義のインデックスです –

関連する問題