优化ApiResource

时间:2018-11-27 15:26:32

标签: laravel api resources many-to-many eager-loading

返回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()

但是,此将始终执行关系加载

0 个答案:

没有答案