2016-04-07 13 views
2

this question ürününü genişletmek istiyorum.Yii2 REST gönderirken ilgili tablo alanına göre sıralama GET isteği

Temel olarak users uç noktam var. Ama ben de ilgili profiles tablosundan veri döndürüyorum. Profillerle genişlemiyorum, her zaman geri dönmek istiyorum. Ben profile.created_at alan ve user.status göre sıralama isteği ve talebi GET ne zaman

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

, bu profile.created_at göre sıralama yapmaz: Ben böyle alanlar yöntemi var.

GET v1/kullanıcıların? Sort = -profile.created_at, durum

bu şekilde elde edilebilir mi?

Bu benim geçerli kod şudur: ActiveDataProvider ait 'tür' parametresini geçersiz kıldık

/** @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 kapsamına bakmanız size yardımcı olabilir. – Govind

cevap

1

. Sırala nesnesinin varsayılan davranışını korumak ve defaultOrder özelliğini değiştirmek için, aşağıdaki gibi bir örnek oluşturun:

$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

Bu, yukarıda yayınlanan kodumdan farklı bir şey yapmıyor. Hala profile.created_at göre sıralayamıyorum –

+0

Sütunları nasıl ayırt edersiniz? Kullanıcı tablosunda create_at, profil tablosunda created_at var ve profile.created_at ile sıralamak istiyorum. Bu çalışmaz: '$ sort = new \ yii \ data \ Sırala ([ 'öznitelikleri' => [ 'profile.created_at', ], 'defaultOrder' => ['profile.created_at' => SORT_DESC ], ]); 'undefined endeksi var –