提问者:小点点

Laravel hasManyThrough操纵用户id


我在Laravel的hasManyThrough函数中遇到了问题。

我的目标是获得一个feed,其中日志由登录用户遵循的用户显示。我试图通过以下方式实现这一目标:

  1. 在User.php中,获取登录用户的ID
  2. 将用户的id与Follow.php中称为user_id的列匹配
  3. 从Follow.php中的行获取target_id
  4. 获取user_id与Follow.phptarget_ids匹配的帖子

我通过用户跟随的人正确地检索数据。但是,在数据中返回的user_id是登录的用户,而不是文章的作者。为什么啊?

使用者php

public function feed() {
return $this->hasManyThrough(
       'App\Post',
       'App\Follow',
       'user_id',
       'user_id',
       'id',
       'target_id'
)
->with('user')
->orderBy('id', 'DESC');
}

邮递php

public function user() {
    return $this->belongsTo('App\User');
}

通过从控制器调用

$posts = Auth::user()->feed;

共1个答案

匿名用户

您的代码创建此查询:select`posts`.*`跟随``用户id`

如您所见,posts。用户id被下面的覆盖。用户id如下。用户id对于快速加载是必需的)。

对于你的问题,我有两种可能的解决方案:

  1. 重命名如下。用户id
  2. 使用两个独立的关系:User→ <代码>有许多→ <代码>跟随→ <代码>有许多→ <代码>发布