У меня нет никакой конкретной работы, я просто хочу знать, что может сделать каждый (). Я погуглил и увидел этот пост: https://github.com/laravel/framework/issues / 1380
Это говорит

каждый должен выполнить некоторые операции со всеми элементами, это все, что нужно сделать, и это то, что каждый уже делает.

Какие операции?

1
ronrun 27 Май 2017 в 20:45

2 ответа

Лучший ответ

each будет выполнять итерацию по элементам в коллекции и позволит вам выполнить код для каждого элемента. Разница между each и map заключается в том, что хотя each просто перебирает значения, map заменяет значение на то, что возвращается в обратном вызове. , Документацию для each можно найти здесь. Если вы хотите посмотреть исходный код .

Каждый метод перебирает элементы в коллекции и передает каждый элемент в обратный вызов. Если вы хотите прекратить перебирать элементы, вы можете вернуть false из вашего обратного вызова.

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

«Некоторые операции», о которых вы спрашиваете, это обратный вызов. В этом случае обратный вызов / операция:

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

Это обновит всех пользователей в последнем входе в коллекцию до текущего времени. Кроме того, если у вас есть метод в модели User с именем updateLogin

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

На самом деле вы можете просто сделать следующее с коллекцией $users:

$users->each->updateLogin();

Вы можете прочитать о том, что здесь :

Коллекции также обеспечивают поддержку «сообщений более высокого порядка», которые являются ярлыками для выполнения общих действий над коллекциями.

6
Alex Harris 27 Май 2017 в 19:09

Ознакомьтесь с официальной документацией по laravel: Документация по Laravel 5.4

В нем говорится, что 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);
});

Но вы также можете (например) добавить его в базу данных или что-нибудь еще, что приходит вам в голову.

2
UeliDeSchwert 27 Май 2017 в 18:02