阅读(686) (10)

Laravel 8 tap() {#collection-method}

2021-07-05 10:24:22 更新

tap 函数接受两个参数: 任意 $value 和闭包。 $value 将被传递给闭包,并被 tap 函数返回。与闭包的返回值无关:

$user = tap(User::first(), function ($user) {
    $user->name = 'taylor';

    $user->save();
}); 

如果没有向 tap 函数传递闭包,可以调用给定 $value 的任意方法。调用此方法的返回值永远是 $value ,无论方法在其定义中返回什么。例如,Eloquent 的 update 方法指定返回一个整数。但是,我们可以通过 tap 函数链式调用 update 方法强制其返回模型自身:

$user = tap($user)->update([
    'name' => $name,
    'email' => $email,
]);