【问题标题】:How can I create a Laravel Resource relationship for a belongsTo?如何为 belongsTo 创建 Laravel 资源关系?
【发布时间】:2020-09-18 02:34:30
【问题描述】:

我创建了一个UserResource,它成功返回了我的所有用户属性,包括它所属的组织。它看起来像这样:

资源/User.php

return [
    'type' => 'users',
    'id' => (string)$this->id,
    'attributes' => [
        'name' => $this->name,
        'email' => $this->email,
        ...
        'relationships' => [
            'organization' => $this->organization,
        ],
    ];

在我的User 模型中,User->Organization 有一个belongsTo 关系。

我想返回组织资源,而不是返回实际的组织模型。

例如,组织hasMany 位置:

Resources/Organization.php

return [
    'type' => 'organizations',
    'id' => (string)$this->id,
    'attributes' => [
        'name' => $this->name,
        ...   
        'relationships' => [
            'locations' => Location::collection($this->locations),
        ],
    ];

我可以成功返回属于该组织的位置集合。我无法返回belongsTo 关系。

我试过了:

资源/User.php

'relationships' => [
    'organization' => Organization::collection($this->organization),
],

// or this
'relationships' => [
    'organization' => Organization::class($this->organization),
],

// or this
use App\Http\Resources\Organization as OrganizationResource;
...

'relationships' => [
    'organization' => OrganizationResource($this->organization),
],

如何将单个模型作为相关资源返回?感谢您的任何建议!

【问题讨论】:

    标签: laravel laravel-7 laravel-resource


    【解决方案1】:

    您是否尝试过使用 new 关键字?

    'relationships' => [
        'organization' => new OrganizationResource($this->organization),
    ],
    

    【讨论】:

    • 就是这样 - 谢谢!出于我自己的天真,为什么我需要使用new 来返回belongsTo,但可以简单地使用::collection 来返回hasMany
    猜你喜欢
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    • 2018-03-08
    • 2019-05-26
    • 2020-01-15
    • 2019-03-08
    • 1970-01-01
    • 2018-08-05
    相关资源
    最近更新 更多