阅读(706) (8)

Laravel 8 自定义 pivot 属性名称

2021-07-07 11:41:21 更新

如前所述,来自中间表的属性可以使用 pivot 属性访问。但是,你可以自由定制此属性的名称,以便更好的反应其在应用中的用途。

例如,如果你的应用中包含可能订阅的用户,则用户与博客之间可能存在多对多的关系。如果是这种情况,你可能希望将中间表访问器命名为 subscription 取代 pivot。这可以在定义关系时使用 as 方法完成:

return $this->belongsToMany('App\Models\Podcast')
                ->as('subscription')
                ->withTimestamps(); 

一旦定义完成,你可以使用自定义名称访问中间表数据:

$users = User::with('podcasts')->get();

foreach ($users->flatMap->podcasts as $podcast) {
    echo $podcast->subscription->created_at;
}