阅读(2437)
赞(9)
Laravel 8 获取中间表字段
2021-07-07 11:41:20 更新
就如你刚才所了解的一样,多对多的关联关系需要一个中间表来提供支持, Eloquent 提供了一些有用的方法来和这张表进行交互。例如,假设我们的 User
对象关联了多个 Role
对象。在获得这些关联对象后,可以使用模型的 pivot
属性访问中间表的属性:
$user = App\Models\User::find(1);
foreach ($user->roles as $role) {
echo $role->pivot->created_at;
}
需要注意的是,我们获取的每个 Role
模型对象,都会被自动赋予 pivot
属性,它代表中间表的一个模型对象,并且可以像其他的 Eloquent 模型一样使用。
默认情况下,pivot
对象只包含两个关联模型的主键,如果你的中间表里还有其他额外字段,你必须在定义关联时明确指出:
return $this->belongsToMany('App\Models\Role')->withPivot('column1', 'column2');
如果你想让中间表自动维护 created_at
和 updated_at
时间戳,那么在定义关联时附加上 withTimestamps
方法即可:
return $this->belongsToMany('App\Models\Role')->withTimestamps();
注意:在数据透视表上使用时间戳时,该表必须同时具有
created_at
和updated_at
时间戳字段。