Отображаемое значение ActiveDataProvider yii2

я просто хочу знать, возможно ли отображать данные $dataprovider независимо от любого gridview.

Например, если $dataprovider содержит значение конкретного результата запроса, то оно будет храниться в нем как массив.

Итак, как я могу вызвать только одно значение из $dataprovider

Например, мой $dataprovider содержит значение всех select * from user where status=10, поэтому можно просто отобразить $dataprovider->user>name только первую запись.

Спасибо


person Mike Ross    schedule 14.09.2015    source источник


Ответы (2)


Вы, конечно, можете получить доступ к $dataProvider->models, как это предлагает scaisEdge, и получить единственную модель, которая вам нужна, но это не очень эффективно, потому что он выполняет запрос и извлекает все модели только для того, чтобы позже отбросить их.

Однако вы можете получить доступ к объекту query dataProvider и вместе с ним получить нужную вам единственную модель.

$newQuery = clone $dataProvider->query;
$model = $newQuery->limit(1)->one();

Клонирование запроса не требуется, если можно изменить dataProvider (если вы больше нигде его не используете).

ОБНОВИТЬ:

$this->title = isset($dataProvider->models[0]->name) ? $dataProvider->models[0]->name : 'empty result';

person Beowulfenator    schedule 15.09.2015
comment
у меня только одна забота. Я хочу отобразить первый элемент моего $dataprovider первого столбца в качестве заголовка страницы. - person Mike Ross; 15.09.2015

Да, внутри dataProvider вы можете найти файл models. Это коллекция моделей, а затем, если вы повторяете эту коллекцию, вы можете использовать данные одной модели, например:

 foreach( $dataProvider->models as $myModel){
    echo myModel->field1;
    echo myModel->filed2:
    ........ // and so on for all the data you need

 } 

Вы можете увидеть этот фреймворк Yii2 документ для ссылки

person scaisEdge    schedule 14.09.2015