我有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
的{{1}}媒体资源:
query
并返回$dataProvider = new ActiveDataProvider([
'query' => $stmt,
'pagination' => [
'pageSize' => self::PER_PAGE,
],
]);
。
(注意:此函数位于从$dataProvider
扩展的类下,因此每个函数的返回数据都应该是JSON内容。)
但是,当我调用此函数时,只返回/选择yii/rest/Controller
的字段,并使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"}
]
我错过了一些我应该转变的过程或任何事情吗?非常感谢任何帮助。
谢谢!
答案 0 :(得分:0)
如果使用Rest,则必须使用extendFields。
在您的用户模型类中添加功能
public function extraFields()
{
return ArrayHelper::merge(parent::extraFields(),[
'orders'=>'orders',
]);
}
然后在请求中添加到url?expand = orders 例如:http://localhost/users?expand=orders
更多信息来自: http://www.yiiframework.com/doc-2.0/guide-rest-resources.html