Laravel 8 tap() {#collection-method}
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,
]);