返回ApiResources时遇到一些问题,因为我想不出如何避免重载关系的方法。
例如,在我的UserResource中,我有:
<?php
return [
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
'role_id' => $this->role_id,
'role' => new RoleResource($this->whenLoaded('role')),
'group_ids' => $this->groups->pluck('id')->toArray(), // here are the problems
'groups' => GroupResource::collection($this->whenLoaded('groups')),
];
在加载单个关系ID时,一切正常,因为$this->role_id
是模型中已经存在的属性。使用$this->whenLoaded('role')
时,它将有条件地加载关系,这太好了!
问题:在加载多对多关系时,我无法设置此“有条件的”紧急加载。
当我放置时:
'groups' => GroupResource::collection($this->whenLoaded('groups'))
它将有条件地加载ManyToMany关系,很酷!
但我想使用以下一组ID:
'group_ids' => $this->groups->pluck('id')->toArray()
但是,此将始终执行关系加载