首页 > 解决方案 > Laravel Eloquen ORM 无法正确返回模型的关系

问题描述

我正在创建一个 API。在这个存储库中有一个名为 show() 的方法,其中返回了一个联系人。用户必须提供联系人的 ID,并且可以提供要加载的关系数组和联系人属性数组(称为字段)。

return $this->contacts::with($request->relationships)->findOrFail($request->id, $request->fields);

但是,当$request->fields提供时,所有关系都返回 null。

请求的Json:

{
    "id": 75,
    "fields": ["id", "name"],
    "relationships": ["lead", "phone", "email", "address"]
}

响应的Json:

{
    "id": 75,
    "name": "Edgard Cesar Bertelli dos Reis",
    "lead": null,
    "phone": null,
    "email": null,
    "address": null
}

关于我可能会出错的任何想法?

标签: laraveleloquentormrelationship

解决方案


您必须在第二个参数中添加关系名称 for findOrFail,在您的示例中可能类似于:

$fields = array_merge($request->relationships, $request->fields);
return $this->contacts::with($request->relationships)->findOrFail($request->id, $fields);

推荐阅读