Laravel Eloquent ORM 无法正确返回模型的关系

Posted

技术标签:

【中文标题】Laravel Eloquent ORM 无法正确返回模型的关系【英文标题】:Laravel Eloquen ORM can't return a model's relationship properly 【发布时间】:2021-11-17 20:21:31 【问题描述】:

我正在创建一个 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

对我可能出错的地方有什么想法吗?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于Laravel Eloquent ORM 无法正确返回模型的关系的主要内容,如果未能解决你的问题,请参考以下文章

我收到此错误:类 Illuminate\Database\Eloquent\Builder 的对象无法在 laravel ORM 中转换为字符串

Laravel Eloquent ORM查询关系里面的关系

Laravel - Eloquent 连接

无法在 Controller Laravel belongsToMany 关系中获取正确的数据 - Laravel / Eloquent [关闭]

Laravel Eloquent ORM 的本地作用域

Laravel Eloquent ORM 关系命名约定