Добрый день. Я создаю
ArrayDataProvider
следующим образом:
$dataProvider = new ArrayDataProvider([
'allModels' => $data,
'sort' => [
'attributes' => [
'quantity',
],
'defaultOrder' => [
'quantity' => SORT_DESC,
]
],
'pagination' => [
'pageSize' => 10
]
]);
Допустим массив
$data
имеет в себе 1000 элементов. Я хочу сделать достаточно ресурсоемкие дополнительные расчеты, но делать их для всех 1000 элементов очень долго, поэтому я хотел сделать доп. расчеты только для отображаемых на странице элементов, в данном случае для первых 10 элементов.
Для этого я добавил вот такой код:
$allModels = $dataProvider->getModels();
foreach ($allModels as &$model) {
// Какие-то сложные расчеты с присвоением значения
$model['value'] = 123;
}
Но когда я передаю
$dataProvider
в GridView, то внутри элементов, отображаемых на странице, уже нет ключа value, которое я ранее создал. Тоже самое будет, если сразу после обработки вывести
$dataProvider->getModels()
Подскажите, как сделать дополнительные расчеты для
ArrayDataProvider
только для элементов, которые будут выводиться на текущей странице?