如何添加具有不同 whenLoaded 关系的相同数组键?

这里开始,我想将关系中的数据放入我的 API 资源中。

随着一个键和一个关系,它的工作原理。但是,对于两个不同的键和两个相同的关系,它不会。

我的目标是:

  • 如果加载了 x 关系,则将此数据用作键“a”。

  • 如果加载了 y 关系,则将此数据用作键“a”。

我试过什么

  1. “post”对象与一键名为“comments”,whenLoaded“comments”关系。(作品)

  2. “发布”对象有两个名为“comments”和“comments”的键。第一个“评论”在加载“评论”关系时创建,第二个“评论”在加载“comments_by_tag”关系时创建。

然后,我加载具有“评论”关系的“帖子”(失败)。并加载“comments_by_tag”关系(有效)。

  1. “发布”对象有两个名为“comments”和“comments”的键。现在,我改变了那些第二个“评论”是第一个而第一个“评论”是第二个的位置。

然后,我加载具有“评论”关系的“帖子”(有效)。并加载“comments_by_tag”关系(失败)。

这是我的代码

return [

  'comments' => CommentItem::collection($this->whenLoaded('comments')),

  'comments' => CommentItem::collection($this->whenLoaded('comments_by_tag')),

];


一只甜甜圈
浏览 148回答 2
2回答

ibeautiful

不那么优雅,但可以满足您的需求。该->relationLoaded(relationName)检查它的加载。return [    'comments' => $this->when(        $this->relationLoaded('comments')         || $this->relationLoaded('comments_by_tag'),        function () {            return CommentItem::collection(                $this->relationLoaded('comments')                    ? $this->comments                    : $this->comments_by_tag            );        }    ), ];

收到一只叮咚

通过简单地检查whenLoaded方法的值。whenLoaded 如果没有加载的关系,方法返回 null。if ($comments = $this->whenLoaded('comments')) {    return ['comments' => $comments]} else if ($commentsByTag = $this->whenLoaded('comments_by_tag')) {    return ['comments' => $commentsByTag];}
打开App,查看更多内容
随时随地看视频慕课网APP