为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
一只甜甜圈 2021-06-30 13:01:33
从这里开始,我想将关系中的数据放入我的 API 资源中。随着一个键和一个关系,它的工作原理。但是,对于两个不同的键和两个相同的关系,它不会。我的目标是:如果加载了 x 关系,则将此数据用作键“a”。如果加载了 y 关系,则将此数据用作键“a”。我试过什么“post”对象与一键名为“comments”,whenLoaded“comments”关系。(作品)“发布”对象有两个名为“comments”和“comments”的键。第一个“评论”在加载“评论”关系时创建,第二个“评论”在加载“comments_by_tag”关系时创建。然后,我加载具有“评论”关系的“帖子”(失败)。并加载“comments_by_tag”关系(有效)。“发布”对象有两个名为“comments”和“comments”的键。现在,我改变了那些第二个“评论”是第一个而第一个“评论”是第二个的位置。然后,我加载具有“评论”关系的“帖子”(有效)。并加载“comments_by_tag”关系(失败)。这是我的代码return [  'comments' => CommentItem::collection($this->whenLoaded('comments')),  'comments' => CommentItem::collection($this->whenLoaded('comments_by_tag')),];
查看完整描述

2 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

不那么优雅,但可以满足您的需求。该->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

            );

        }

    ), 

];


查看完整回答
反对 回复 2021-07-02
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

通过简单地检查whenLoaded方法的值。


whenLoaded 如果没有加载的关系,方法返回 null。


if ($comments = $this->whenLoaded('comments')) {

    return ['comments' => $comments]

} else if ($commentsByTag = $this->whenLoaded('comments_by_tag')) {

    return ['comments' => $commentsByTag];

}


查看完整回答
反对 回复 2021-07-02
  • 2 回答
  • 0 关注
  • 147 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信