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

时间:2017-05-27 17:45:01

标签: laravel laravel-5 laravel-5.4

我没有具体的工作要做,只想知道每个()可以做什么。 我用Google搜索,看到这篇文章:https://github.com/laravel/framework/issues/1380
它说

  

每个都在那里对所有项目执行一些操作,就是这样   有它,这就是每个人已经在做的事情。

有什么操作?

2 个答案:

答案 0 :(得分:3)

each方法将迭代集合中的项目,并允许您对每个项目执行代码。 eachmap之间的区别在于,each只是遍历值,map 将值替换为回调中返回的值 。找到each的文档here。如果您想查看source code

  

每个方法迭代集合中的项目并传递   每个项目回调。如果你想停止迭代   这些项目,您可能会从回调中返回错误。

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

"一些操作"你在询问是回调。在这种情况下,回调/操作是:

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

这将更新集合上次登录到当前时间的所有用户。此外,如果您在名为User的{​​{1}}模型上有方法

updateLogin

您实际上可以使用class User extends Model { public function updateLogin() { $this->update(['last_login' => Carbon::now()]); } }

的集合执行以下操作
$users

您可以阅读here

  

收藏集还支持"更高阶的消息",其中   是对收藏品采取共同行动的捷径。

答案 1 :(得分:2)

查看官方的laravel文档:Laravel 5.4 Documentation

它指出The each method iterates over the items in the collection and passes each item to a callback

因此,对于集合中的每个项目,它会调用一个函数或执行something。那是什么,取决于你自己决定。

例如,以下代码段转储集合中的每个元素:

$collection = $collection->each(function ($item, $key) {
    var_dump($item);
});

但是你也可以(例如)将它添加到数据库或者你想到的东西。