Laravel 8 条件属性
有些时候,你可能希望在给定条件满足时添加属性到资源响应里。例如,你可能希望如果当前用户是「管理员」时添加某个值到资源响应中。在这种情况下 Laravel 提供了一些辅助方法来帮助你解决问题。 when
方法可以被用来有条件地向资源响应添加属性:
/**
* 将资源转换成数组
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
'secret' => $this->when(Auth::user()->isAdmin(), 'secret-value'),
'created_at' => $this->created_at,
'updated_at' => $this->updated_at,
];
}
在上面这个例子中,只有当 isAdmin
方法返回 true
时,secret
键才会最终在资源响应中被返回。如果该方法返回 false
,则 secret
键将会在资源响应被发送给客户端之前被删除。when
方法可以使你避免使用条件语句拼接数组,转而用更优雅的方式来编写你的资源。
when
方法也接受闭包作为其第二个参数,只有在给定条件为 true
时,才从闭包中计算返回的值:
'secret' => $this->when(Auth::user()->isAdmin(), function () {
return 'secret-value';
}),