我有一个 users
表引用 orders
表,所以在我的 Users
模型中,关系方法声明如下:
public function getOrders()
{
return $this->hasMany(Orders::className(), ['user_id' => 'user_id']);
}
我有一个函数,我正在构建此查询:
$stmt = Users::find()->select([
'users.first_name', 'users.last_name',
'users.user_id', 'orders.payment_method'
])->innerJoinWith('orders');
并将它传递给 ActiveDataProvider
的 query
属性:
$dataProvider = new ActiveDataProvider([
'query' => $stmt,
'pagination' => [
'pageSize' => self::PER_PAGE,
],
]);
并返回 $dataProvider
.
(注意:此函数位于从 yii/rest/Controller
扩展的类下,因此每个函数的返回数据都应该是JSON内容 . )
但是,当我调用此函数时,只返回/选择 users
的字段,并保持 orders.payment_method
丢失 . 这是我需要得到的:
[
{"first_name":"Gold","last_name":"Jacinto","user_id":1521,"payment_method":"CC"},
{"first_name":"Gold","last_name":"Jacinto","user_id":1521,"payment_method":"COD"}
]
但获得此输出:
[
{"first_name":"Gold","last_name":"Jacinto","user_id":1521},
{"first_name":"Gold","last_name":"Jacinto","user_id":1521}
]
我错过了一些我应该转变的过程或任何事情吗?任何帮助是极大的赞赏 .
谢谢!
1 回答
如果使用Rest,则必须使用extendFields .
在您的用户模型类中添加功能
然后在请求中添加到url?expand = orders例如:http://localhost/users?expand=orders
更多的是在这里:http://www.yiiframework.com/doc-2.0/guide-rest-resources.html