【发布时间】:2020-05-08 16:19:33
【问题描述】:
我正在尝试将我的所有联接重写为 Elequent 模型关系。 这是我目前所拥有的:
class SectionAndUser
{
public function sections()
{
return $this->belongsTo('App\Models\Section');
}
public function users()
{
return $this->belongsTo('App\Models\User');
}
...
class User
{
public function sectionAndUser()
{
return $this->hasMany('App\Models\SectionAndUser');
}
...
class Section
{
public function sectionAndUsers()
{
return $this->hasMany('App\Models\SectionAndUser');
}
...
使用选择:
$sections = User::find($userId)->sectionAndUser()->get();
我得到结果:
{
"id": 1,
"section_id": 1,
"user_id": 133
}
我现在如何附加包含关于 section_id 1 的所有数据的 3 模型部分?
这是我希望实现的连接:
$id=Auth::id();
$results = DB::table('sections')
->join('section_and_users', function ($join) use ($id) {
$join->on('sections.id', '=', 'section_and_users.section_id')
->where('section_and_users.user_id','=', $id);
})
->get();
预期结果:
{
"id": 1,
"section_id": 1,
"section_name": 'sectionName'
"user_id": 133
}
【问题讨论】:
-
嗨,您为什么要使用 3 个模型而不是两个模型?
-
由于是多对多关系,用户可以属于多个section,section可以有多个用户,所以我做了一个链接表