阅读(85) (9)

Laravel 8 有条件的合并数据

2021-07-08 09:45:41 更新

有些时候,你可能希望在给定条件满足时添加多个属性到资源响应里。在这种情况下,你可以使用 mergeWhen 方法在给定的条件为 true 时将多个属性添加到响应中:

/**
 * 将资源转换成数组
 *
 * @param  IlluminateHttpRequest  $request
 * @return array
 */
public function toArray($request)
{
    return [
        'id' => $this->id,
        'name' => $this->name,
        'email' => $this->email,
        $this->mergeWhen(Auth::user()->isAdmin(), [
            'first-secret' => 'value',
            'second-secret' => 'value',
        ]),
        'created_at' => $this->created_at,
        'updated_at' => $this->updated_at,
    ];
} 

同理,如果给定的条件为 false 时,则这些属性将会在资源响应被发送给客户端之前被移除。

注意:mergeWhen 方法不应该被使用在混合字符串和数字键的数组中。此外,它也不应该被使用在不按顺序排列的数字键的数组中。