ActiveDataProvider 显示值 yii2

ActiveDataProvider display value yii2

我只想知道是否可以独立于任何 gridview 显示 $dataprovider 的数据。

如果 $dataprovider 包含特定查询结果的值,它将作为数组存储在其中。

那么我怎样才能只调用 $dataprovider

中的一个值

例如我的 $dataprovider 包含所有 select * from user where status=10 的值 那么是否可以仅显示 $dataprovider->user>name 第一条记录。

谢谢

是的,您可以在 dataProvider 中找到 models。这些是模型的集合,然后如果您迭代此集合,您可以使用单个模型数据,例如:

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

 } 

可以看看这个Yii2框架doc for ref

您当然可以按照 scaisEdge 的建议访问 $dataProvider->models 并获得您需要的单个模型,但这不是很有效,因为它执行查询并检索 all 模型只会在以后被丢弃。

但是,您可以访问 dataProviderquery 对象,并通过它获得您需要的单个模型。

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

如果可以修改 dataProvider(如果您不在其他任何地方使用它),则无需克隆查询。

更新:

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