0
ArrayDataProvider을 사용하여 모델을 혼합 한 다음 하나의 데이터 공급자로 병합했습니다. 그리드보기에서 데이터 공급자를 사용하고 모든 것이 잘 작동합니다. 하지만 그리드 뷰를 한 열씩 주문해야하는데 많은 솔루션을 시도했지만 그 중 아무 것도 작동하지 않았습니다.ArrayDataProvider를 사용하여 하나의 dataprovider로 혼합 모델 정렬
이 내 모델 코드 (item_order에 의해 순서)
public function getAllSelectedItemsInTheUnit($unitId, $grid = false)
{
$finalList = array();
$storiesList = array();
$activityList = array();
$breakList = array();
$stories = UnitStories::find()->joinWith(['story'])->where("unit_id=$unitId")->all();
if (count($stories) > 0) {
foreach ($stories as $item) {
$storiesList[] = [
'key' => self::TYPE_STORY . $item->id,
'id' => $item->id,
'title' => $item->story->title,
'type' => self::TYPE_STORY,
'item_order' => $item->unit_order,
];
}
}
$activities = UnitActivities::find()->joinWith(['activity'])->where("unit_id=$unitId")->all();
if (count($activities) > 0) {
foreach ($activities as $item) {
$activityList[] = [
'key' => self::TYPE_ACTIVITY . $item->id,
'id' => $item->id,
'title' => $item->activity->title,
'type' => self::TYPE_ACTIVITY,
'item_order' => $item->activity_order,
];
}
}
$breaks = UnitBreaks::find()->where("unit_id=$unitId")->all();
if (count($breaks) > 0) {
foreach ($breaks as $item) {
$breakList[] = [
'key' => self::TYPE_BREAK . $item->id,
'id' => $item->id,
'title' => $item->title,
'type' => self::TYPE_BREAK,
'item_order' => $item->unit_order,
];
}
}
$finalList = array_merge($storiesList, $activityList, $breakList);
$dataProvider = new ArrayDataProvider([
'allModels' => $finalList, 'key' => 'key',
'sort' => [
'attributes' => ['item_order'],
],
]);
return $dataProvider;
}
모든 솔루션이 아주 좋은 것입니다 심지어 내가 문제가 해결됩니다 추측 순수 PHP에 의해 배열을 정렬 할 수 있습니다.