我的数据库中有这个架构。
一个任务有很多时间表,一个时间表只有一个任务。
一个职位有很多任务,一个任务只有一个职位。
一个订单有多个仓位,一个仓位只有一个订单。
在我的班级yii\rest\IndexAction
中,我有这段代码(在prepareDataProvider()
方法中):
$query = $timeSheetModel->find()
->distinct()
->joinWith("mission")
->joinWith("mission.position")
->joinWith("mission.position.order")
->where("public.order.id = $id");
$results = new ActiveDataProvider([
'query' => $query,
]);
return $results;
那么如何个性化我的额外字段以获得具有以下结构的json:
答案 0 :(得分:1)
要返回特定字段,例如在模型中可以覆盖字段方法:
public function fields()
{
return [
'misson' => function($model) {
return $model->mission->id; // or anything else from the mission relation
},
... etc.
];
}
有关字段和extraFields方法的更多信息,请参见yii2 doc - http://www.yiiframework.com/doc-2.0/guide-rest-resources.html#fields
答案 1 :(得分:0)
使用ArrayDataProvider(http://www.yiiframework.com/doc-2.0/yii-data-arraydataprovider.html)
$query = new \yii\db\Query();
$query = $timeSheetModel->find()
->distinct()
->joinWith("mission")
->joinWith("mission.position")
->joinWith("mission.position.order")
->where("public.order.id = $id");
$results = new ArrayDataProvider([
'allModels' => $query->all(),
// Add pagination information if required
]);
$datas = $results->allModels;
foreach($datas as &$data) {
// Do your formatting here
}
$results->allModels = $datas;
return $results;