我在Laravel中遇到了hasManyThrough函数的问题。
我的目标是获取用户所关注的用户所显示的帖子。我试图通过以下方式实现这一目标:
我正确地检索用户关注的数据。但是,在数据中返回的user_id是登录用户而不是帖子的作者。为什么呢?
user.php的
public function feed() {
return $this->hasManyThrough(
'App\Post',
'App\Follow',
'user_id',
'user_id',
'id',
'target_id'
)
->with('user')
->orderBy('id', 'DESC');
}
post.php中
public function user() {
return $this->belongsTo('App\User');
}
通过
从控制器调用$posts = Auth::user()->feed;
答案 0 :(得分:1)
您的代码会创建此查询:select `posts`.*, `follows`.`user_id`...
正如您所看到的,posts.user_id
被follows.user_id
覆盖(follows.user_id
是急切加载所必需的。)
我为您的问题找到了两种可能的解决方案:
follows.user_id
。User
→HasMany
→Follow
→HasMany
→Post