Laravel 8 条件中间表信息
除了在你的资源响应中有条件地包含关联外,你还可以使用 whenPivotLoaded
方法有条件地从多对多关联的中间表中添加数据。 whenPivotLoaded
方法接受的第一个参数为中间表的名称。第二个参数是一个闭包,它定义了在模型上如果中间表信息可用时要返回的值:
/**
* 将资源转换成数组
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'expires_at' => $this->whenPivotLoaded('role_user', function () {
return $this->pivot->expires_at;
}),
];
}
如果你的中间表使用的是 pivot
以外的访问器,你可以使用 whenPivotLoadedAs
方法:
/**
* 将资源转换成数组
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'expires_at' => $this->whenPivotLoadedAs('subscription', 'role_user', function () {
return $this->subscription->expires_at;
}),
];
}