首页 > 解决方案 > 将 URI 添加到 laravel 响应

问题描述

我正在构建一个 API,但我有几个模型相互关联:

Asset
Location
User

我可以通过 api 通过访问/asset/5/location/15

这一切都很好,现在我已经开始包含一些与它的关系.. 所以如果asset 5location 15.. 从/asset/5现在的返回包括(使用 WITH)它的位置信息。

例子:

/asset/5
{
    "id": 5,
--> "uri": http: //localhost/api/asset/5, <-- how do i generate/append this
     "name": null,
    "location": {
        "id": 15,
        "name": "jimUser",
-->     "uri": "http://localhost/api/location/5"  <-- how do i generate/append this
    }
}

(URI 不是我的架构的一部分。我想将它添加到响应中。)

现在所有位置信息都与资产一起返回。正是在寻找什么..

我想做的是找到一种方法来使用直接指向该实体的链接填充这些 URI 字段。所以在/asset/包含相关位置信息的返回上,我希望能够提供一个直接指向该位置的链接。

我无法找到一种方法来为主要响应(在这种情况下是资产)或关系(在这种情况下是位置)生成 URI

我是 Laravel 的新手,我试图基本上反映具有这种相同类型响应的应用程序。

任何帮助表示赞赏。

谢谢

我尝试与$request$router许多其他人一起工作。

标签: laravelentity-relationship

解决方案


为您的属性创建一个访问器uri并将其设置为自动附加到 JSON 响应:

// Location.php

class Location
{
  protected $appends = ['uri'];

  ...

  public function getUriAttribute()
  {
    return '/api/locations/' . $this->id;
  }
}

推荐阅读