mmv*_*sbg 4 api rest relational-database yii2
我已经使用自定义操作设置了 Yii2 REST API,一切工作正常。然而,我想做的是从 API 返回一些数据,其中包括由外键设置的数据库关系。这些关系是存在的,而且它们实际上运行正常。以下是其中一个控制器中的查询示例:
$result = \app\models\Person::find()->joinWith('fKCountry', true)
->where(..some condition..)->one();
Run Code Online (Sandbox Code Playgroud)
例如,仍然在控制器中,我可以调用如下内容:
$result->fKCountry->name
Run Code Online (Sandbox Code Playgroud)
当关系有效时,它会显示适当的名称。到目前为止一切顺利,但是一旦我返回return $result;
从 API 客户端收到的结果,该结果fkCountry
就消失了,我无法访问上面提到的名称。唯一剩下的就是指向国家/地区表的外键值。
我可以提供更多代码和信息,但我认为这足以描述问题。如何对返回的连接数据中的信息进行编码,以便 API 客户端也可以访问它?
像这样设置
public function actionYourAction() {
return new ActiveDataProvider([
'query' => Person::find()->with('fKCountry'), // and the where() part, etc.
]);
}
Run Code Online (Sandbox Code Playgroud)
确保您的 Person 模型中的extraFields
函数包含fKCountry
. 如果您还没有实现该extraFields
功能,请添加它:
public function extraFields() {
return ['fKCountry'];
}
Run Code Online (Sandbox Code Playgroud)
然后,当您调用 url 时,请确保添加参数expand
来告诉您要包含 fkCountry 数据的操作。所以像这样:
/yourcontroller/your-action?expand=fKCountry
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3234 次 |
最近记录: |