【问题标题】:Laravel RESTful API Resolve Foreign KeysLaravel RESTful API 解析外键
【发布时间】:2015-07-07 15:37:21
【问题描述】:

所以我正在 Laravel 中构建一个 RESTful API。到目前为止,我有一个更简单的控制器,如下所示:

class TripController extends Controller
{
  public function index()
  {
    $data = Trip::all();

    return $data;
  }
}

我得到了这个:

[
  {
  "id": 1,
  "created_at": "2015-07-06 21:01:03",
  "updated_at": "2015-07-06 21:01:03",
  "created_by": 1,
  "updated_by": 1,
  "description": "Sample Trip",
  "aircraft_id": 1
  }
]

这正是我所要求的。事情是“created_by”、“updated_by”和“aircraft_id”是外键。我知道我可以开始使用我在模型中设置的关系来解析我的外键,例如:

$createdByName = App\Trip::first()->createdBy()->get('name');

但这需要对集合进行一些循环,以将 id 替换为外键所需的信息(基本上是名称)。仅使用它返回 JSON 时,在 Laravel 中是否有一种聪明的方法可以做到这一点?

【问题讨论】:

    标签: php laravel eloquent


    【解决方案1】:

    如果您通过 eloquent 声明模型上的关系,您可以使用 eager loading 来交付相关模型。

    Trip::with('aircraft','createdBy','updatedBy')->all();
    

    否则,如果您只想包含类似 name 属性的内容,您可以使用 laravel accessor methods 将属性添加到您的 Trip 模型中 像这样定义一个访问器:

    public function getAircraftNameAttribute()
    {
        return $this->aircraft->name;
    }
    

    并通过将其添加到 $appends 数组来将其包含在模型数组或 json 表单中:

    protected $appends = ['aircraft_name'];
    

    请参阅here 的文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-20
      • 2011-12-05
      • 2013-05-31
      • 1970-01-01
      • 1970-01-01
      • 2017-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多