laravel hasmanythrough操作用户id

osh3o9ms  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(365)

我在laravel中遇到了hasmanythrough函数的问题。
我的目标是获得一个feed,其中日志由登录用户跟随的用户显示。我试图通过以下方式实现这一目标:
在user.php中,获取登录用户的id
将用户id与follow.php中名为user\ id的列匹配
从follow.php中的行获取目标\u id
从follow.php获取用户标识与目标标识匹配的帖子
我通过用户跟踪的人正确地检索数据。但是,在数据中返回的用户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;
ix0qys7i

ix0qys7i1#

您的代码将创建此查询: selectposts.*,follows.user_id... 如你所见, posts.user_id 被覆盖 follows.user_id ( follows.user_id 是紧急装载所必需的)。
我看到两种可能的解决方法:
重命名 follows.user_id .
使用两种不同的关系: UserHasManyFollowHasManyPost

相关问题