Laravel,each()函数可以做什么?

ron*_*run 1 laravel laravel-5 laravel-5.4

我没有特定的工作要做,只是想知道each()可以做什么。我用谷歌搜索,看到了这篇文章:https : //github.com/laravel/framework/issues/1380
它说

每个对象都可以对所有项目执行某些操作,这就是所有内容,而这就是每个对象已经在执行的操作。

有什么操作?

Ale*_*ris 6

each方法将遍历集合中的项目,并允许您对每个项目执行代码。each和之间的区别map是,虽然each仅迭代这些值,但map 回调中返回的值替换该值。的文档each可在此处找到。如果要看源代码

each方法遍历集合中的项目,并将每个项目传递给回调。如果您想停止遍历所有项目,则可以从回调中返回false。

$users->each(function($user, $key) {
     $user->update(['last_login' => Carbon::now()]);         
});
Run Code Online (Sandbox Code Playgroud)

您要查询的“某些操作”是回调。在这种情况下,回调/操作为:

function($user, $key) {
    $user->update(['last_login' => Carbon::now()]);         
}
Run Code Online (Sandbox Code Playgroud)

这会将集合上次登录中的所有用户更新为当前时间。此外,如果User模型上有一个名为updateLogin

class User extends Model
{
    public function updateLogin()
    {
        $this->update(['last_login' => Carbon::now()]);
    }
} 
Run Code Online (Sandbox Code Playgroud)

实际上,您可以对的集合进行以下操作$users

$users->each->updateLogin();
Run Code Online (Sandbox Code Playgroud)

您可以在这里阅读有关内容:

集合还支持“高级消息”,这是对集合执行常见操作的捷径。