查两张表,用ActiveDataProvider 只返回一张表的字段,返回全部字段怎么处理? [ 2.0 版本 ]
$query = $modelClass::find()->select(['a
.id', 'a
.orderno', 'a
.courier', 'a
.OrderStatus', 'b
.ID', 'b
.BoxID', 'a
.CreateTime', 'a
.ModifyTime'])->joinWith('tOrder');
return new ActiveDataProvider([
'query' => $query,
'sort' => [
'attributes' => ['id', 'orderno', 'courier'],
],
]);
返回的是a表中的字段,要返回a,b中的字段怎么写?
共 5 个回答
-
-
liquanhong 回答于 2017-02-16 16:24 举报
$query =(new yii\db\Query())->select(['
a
.id', 'a
.orderno', 'a
.courier', 'a
.OrderStatus', 'b
.ID', 'b
.BoxID', 'a
.CreateTime', 'a
.ModifyTime'])->from(['b'=>'表名'])->joinWith(['tOrder as a','a.=b.']);
你也可以看看http://www.yiichina.com/doc/guide/2.0/db-active-record
下边的(查询关联的数据),这样关联. -
qqa4560354 回答于 2017-02-16 16:56 举报
试试另外一种写法
$model=(new \yii\db\Query())
->select('`a`.id', '`a`.orderno', '`a`.courier', '`a`.OrderStatus', '`b`.ID', '`b`.BoxID', '`a`.CreateTime', '`a`.ModifyTime') ->from('表名') ->where(['***'=>$***]) ->andWhere(['sos.is_show'=>1]) ->leftJoin('user','user.id=sos.create_user_id') ->orderBy(['distance'=>SORT_ASC]) ->limit(10) ->all();
共 1 条回复qqa4560354 回复于 2017-02-16 16:57 回复补充
这样写,还可以增加查询字段比如说addSelect ,andWhere这种写法
求采纳qqa4560354 觉得很赞 -
dashixiong 回答于 2017-02-28 14:39 举报
这种写法有点老土,看看我是怎么做的
我举个例子,我要获取文章中用户的信息,文章字段存了用户的id
首先在文章模型,uid是文章中的字段
public function getUserinfo() { return $this->hasOne(User::className(),['id'=>'uid']); }
然后写$query->find()->with('userinfo');
然后把$query带入ActiveDataProvider
热豆腐 觉得很赞 -
hp66722667 回答于 2018-05-03 08:57 举报
可以自定义$modelClass的 fields() 方法,这样就可以随意显示什么了啊
wxk843
注册时间:2016-05-31
最后登录:2017-05-17
在线时长:5小时40分
最后登录:2017-05-17
在线时长:5小时40分
- 粉丝0
- 金钱5
- 威望0
- 积分55