如何在一个yii2 rest api动作中显示多个模型数据

时间:2016-03-07 11:01:26

标签: api rest yii yii2

我正在使用yii2 rest api。我的行动中的问题是我必须在一个动作中显示模型数据。我正在展示汽车细节,还有汽车类型及其可用的公司。

问题是,一个车型中的车辆细节以及另外两个车型上的车型和汽车公司。

如何使用rest api获取模型。

请有人建议我如何获得此

2 个答案:

答案 0 :(得分:2)

您可以使用extraFields方法。这是一个例子:

class Image extends yii\db\ActiveRecord
{
    ...

    public function getOwner()
    {
        return $this->hasOne(Owner::className(), ['id' => 'owner_id']);
    }

    public function getTags()
    {
        return $this->hasMany(Tag::className(), ['id' => 'tag_id'])->viaTable('image_has_tag', ['image_id' => 'id']);
    }

    public function getUploader() 
    { 
       return (new \yii\db\Query())
                ->select('username')
                ->from('user')
                ->where([ 'id' => $this->user_id ])
                ->scalar();
    }

    public function extraFields()
    {
        return ['owner','tags','uploader'];
    }
}

要获取图片列表及其各自的ownertagsuploader,您只需执行GET请求即可:

HTTP:/本地主机/图像扩大=所有者,标签,载

正如您所看到的,它完全是关于模型类中的关系设计。您还可以使用fields方法在每个相关模型类中取消设置或保留字段输出。有关详细信息,请参阅docs

答案 1 :(得分:0)

我认为Yii REST API只返回应用程序数据交换格式(如JSON)中的vanilla CRUD操作。这适用于基本的REST服务。但是,如果要返回自定义数据,则必须手动编写REST响应。

如果没有Yii REST API,可以实现这一目标

  1. 像处理普通控制器操作一样处理请求
  2. 相应地设置yii\web\Response:JSON,XML等
  3. 确保您的回复符合HATEOAS标准(如果您对此有所了解; Yii 2 definitely is
  4. 以您希望的方式打包并返回您的回复。
  5. 结束PHP流程。