我的数据库中有3个表:
users (id);
interests (id);
users_interests (user_id, interests_id);
我希望能够以这种方式获取所有用户的兴趣:
$interests = $user->interests
这是我在User.php模型中编写的,遵循laravel的doc:
public function interests() {
return $this->hasManyThrough(
'App\Interest', 'App\UserInterest',
'user_id', 'id', 'interest_id'
);
}
但即使用户有游戏,它也会返回空白。所以必须有一些我做错了
有人帮我吗?
答案 0 :(得分:2)
我认为belongs to many
可以完成这项任务:
public function interests() {
return $this->belongsToMany(
'App\Interest',
'users_interests',
'user_id',
'interests_id'
);
}
与docs
中的示例非常相似如果您要将users_interests
表重命名为interest_user
和列
对于单数形式interests_id
,您只需要第一个参数:
public function interests() {
return $this->belongsToMany(App\Interest::class);
}
根据我的理解,hasManyThrough
用于在关系中向前跳转(也在文档中描述):
“has-many-through”关系提供了一个方便的快捷方式 通过中间关系访问遥远的关系。