如何为 belongsTo 创建 Laravel 资源关系?
Posted
技术标签:
【中文标题】如何为 belongsTo 创建 Laravel 资源关系?【英文标题】:How can I create a Laravel Resource relationship for a belongsTo? 【发布时间】: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),
],
如何将单个模型作为相关资源返回?感谢您的任何建议!
【问题讨论】:
【参考方案1】:您是否尝试过使用 new
关键字?
'relationships' => [
'organization' => new OrganizationResource($this->organization),
],
【讨论】:
就是这样 - 谢谢!出于我自己的天真,为什么我需要使用new
来返回belongsTo
,但可以简单地使用::collection
来返回hasMany
?以上是关于如何为 belongsTo 创建 Laravel 资源关系?的主要内容,如果未能解决你的问题,请参考以下文章
如何为 postgresql 数组数据类型创建 laravel 迁移