Laravel - Eloquent 关系 - 多对多 - 获取中间 table 列
Laravel - Eloquent relation - many-to-many - get intermediate table columns
我有一个关于 Laravel Eloquent 关系的问题。
我有以下table情况:
Table guests
:
- id
- 名字
- ...
Table landing_pages
:
- id
- 名字
- ...
一位访客可以有多个登陆页面。登陆页面将有多个访客。
所以我想,我可以在那里使用 many-to-many
关系,然后我创建了一个新的 table
Table guests_landing_pages
:
- id
- guest_id
- landing_page_id
- ...
我可以通过以下方式使用它:
在 guest
模型中,我可以这样做,以创建 many-to-many
关系:
public function landing_pages()
{
return $this->belongsToMany(\App\Models\LandingPage\LandingPage::class, 'guests_landing_pages','landing_page_id','guest_id');
}
... 而在 landing_page
模型中则相反。
但实际上 table guests_landing_pages
包含的数据不仅仅是 guest_id
和 landing_page_id
关系。
里面还有其他几个字段:
Table guests_landing_pages
:
- id
- guest_id
- landing_page_id
- identifier_token
- max_persons
- 回答
- ...
我现在的问题是,我怎样才能最好地实现这一点。如果我使用如上所述的 many-to-many
关系,我将无法访问中间 table 中的字段,不是吗?
或者最好的解决方案是创建一个包含所有字段的 GuestLandingPages
模型并同时创建 hasMany
关系 to/in?
Laravel Eloquent 具有检索中间列的功能。
public function landing_pages()
{
return $this->belongsToMany(\App\Models\LandingPage\LandingPage::class, 'guests_landing_pages','landing_page_id','guest_id')
->withPivot('max_persons', 'answers');
}
我有一个关于 Laravel Eloquent 关系的问题。
我有以下table情况:
Table guests
:
- id
- 名字
- ...
Table landing_pages
:
- id
- 名字
- ...
一位访客可以有多个登陆页面。登陆页面将有多个访客。
所以我想,我可以在那里使用 many-to-many
关系,然后我创建了一个新的 table
Table guests_landing_pages
:
- id
- guest_id
- landing_page_id
- ...
我可以通过以下方式使用它:
在 guest
模型中,我可以这样做,以创建 many-to-many
关系:
public function landing_pages()
{
return $this->belongsToMany(\App\Models\LandingPage\LandingPage::class, 'guests_landing_pages','landing_page_id','guest_id');
}
... 而在 landing_page
模型中则相反。
但实际上 table guests_landing_pages
包含的数据不仅仅是 guest_id
和 landing_page_id
关系。
里面还有其他几个字段:
Table guests_landing_pages
:
- id
- guest_id
- landing_page_id
- identifier_token
- max_persons
- 回答
- ...
我现在的问题是,我怎样才能最好地实现这一点。如果我使用如上所述的 many-to-many
关系,我将无法访问中间 table 中的字段,不是吗?
或者最好的解决方案是创建一个包含所有字段的 GuestLandingPages
模型并同时创建 hasMany
关系 to/in?
Laravel Eloquent 具有检索中间列的功能。
public function landing_pages()
{
return $this->belongsToMany(\App\Models\LandingPage\LandingPage::class, 'guests_landing_pages','landing_page_id','guest_id')
->withPivot('max_persons', 'answers');
}