首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Laravel 5-具有嵌套关系的API资源

Laravel 5-具有嵌套关系的API资源
EN

Stack Overflow用户
提问于 2018-06-08 03:40:47
回答 1查看 3.2K关注 0票数 2

首先,我几周前就开始学习Laravel了,如果我在解释我的问题时没有用正确的词,我很抱歉。

我正在尝试编写一些API来检索我的数据库中的所有帖子和帖子的信息,我想检索与每个帖子相关的用户信息(如用户名,id等)。

用户模型:

代码语言:javascript
复制
public function post()
    { return $this->hasMany(Post::class); }

帖子模型:

代码语言:javascript
复制
public function user()
    { return $this->belongsTo(User::class); }

然后在我的PostResource中,我尝试从DB返回帖子的数据

帖子资源:

代码语言:javascript
复制
public function toArray($request)
{
    return [
        'id' => $this->id,
        'user_id' => $this->user_id,
        'user_info' => HERE_I_WANT_USER[USERNAME,ID ETC.]
        'body' => $this->name
    ];
}

在我的PostController中,我有这个函数,它返回我的集合:

代码语言:javascript
复制
 public function show() { 
      return PostResource::collection ( Post::get() );
 }

因此,由于"user_id“的值,每个帖子都链接到每个作者。

这里是我的问题:实现这一目标的步骤是什么?

我已经对Laravel Doc "https://laravel.com/docs/5.5/eloquent-resources#conditional-relationships“进行了修改,并执行了与之前相同的步骤,但我无法检索任何数据,因为我的用户信息返回为空。

我想更好地了解这些步骤是什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-08 03:52:55

您只需将其命名为Post模型的一部分。类似于下面的内容:

代码语言:javascript
复制
return [
        'id' => $this->id,
        'user_id' => $this->user_id,
        'user_info' => $this->user
        'body' => $this->name
    ];

我假设$this是一个后期模型。如果不是,那么您将希望找到它并使用它,就像$post->user一样。此外,该方法的名称将是您的关系函数的任何名称(没有括号),所以如果这一点发生变化,您必须更新它。最后,这将返回一个用户模型,因此您可以像普通模型($post->user->username或其他任何模型)一样与它交互。

Here is the Laravel Relationship documentaion,以供进一步参考。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50749054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档