2016-06-26 09:35:19 2267次浏览 3条回答 0 悬赏 10 金钱

这样的操作本来是可以正常显示的

public function actionIndex(){
	$searchModel = new OrderSearch();
	$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
	return $this->render('index', [
		'dataProvider' => $dataProvider,
	]);
}

<?= GridView::widget([
    'dataProvider' => $dataProvider,
……
]);
?>

然后改成如下:
关联函数:

public function getOrders(){
	return $this->hasMany(Order::className(), ['name' => 'username'])->asArray();
}

public function actionIndex()
{
	$member=Member::find()->where(['username'=>'test'])->one();
	$orders=$member->orders;
	return $this->render('index', [
		'dataProvider' => $orders,
	]);
}

就提示显示不了了,请问
这个$orders 该怎么写才可以使用GridView

  • 回答于 2016-06-26 11:38 举报

    未提供指定格式的数据.
    这里需要模型而非数组

  • 回答于 2016-06-26 19:57 举报

    dataProvider 也是可以自己定义查询语句取自己想要的数据

    举个例子:

    
    $query = Wlborder::find()->orderBy('wo.create_time DESC');
    $query->from(Wlborder::tableName() . ' as wo');
    $query->joinWith('xx');
    $query->joinWith('ss');
    $query->joinWith('xxsddd');
    //$query->joinWith('wlborder');
            $query->select('wo.*,wlbOrderItem.order_sub_code,wlbSellerSubscription.service_alias,item_name,plan_quantity');
    $dataProvider = new ActiveDataProvider([
        'query' => $query,
        'pagination' => [
            'pageSize' => 10,
        ],
    ]);
    
    觉得很赞
  • 回答于 2016-07-19 22:53 举报

    显示GridView需要一个ActiveDataProvider对象返回的数据格式,而你这里返回的是数组
    看看这个http://blog.csdn.net/cjqh_hao/article/details/48742423

您需要登录后才可以回答。登录 | 立即注册
okokad
经理

okokad

注册时间:2016-02-29
最后登录:2017-07-01
在线时长:49小时26分
  • 粉丝12
  • 金钱25
  • 威望80
  • 积分1315

热门问题