1. ホーム
  2. laravel

[解決済み] Laravel、each()関数でできることは?

2022-02-19 07:37:37

質問内容

具体的な作業はなく、each()で何ができるのか知りたいだけです。 ググってみたところ、このような投稿がありました。 https://github.com/laravel/framework/issues/1380
と書かれています。

各アイテムは、すべてのアイテムに対して何らかの操作を行うために存在する、ただそれだけです。 があり、それはeachがすでにやっていることです。

操作とは何ですか?

どのように解決するのですか?

その each メソッドを使用すると、コレクション内の項目を繰り返し処理し、各項目に対してコードを実行できるようになります。との違いは eachmap は、その一方で each は単に値を反復処理します。 map を置き換えます。 の場合、コールバックで返される値がそのまま使用されます。のドキュメントは each が見つかりました。 ここで . を見たい場合は ソースコード .

each メソッドは、コレクション内の項目を繰り返し処理し、その結果を の各項目をコールバックに渡す。イテレーションを停止したい場合は を返すと、コールバックはfalseを返します。

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

お問い合わせの"some operations"はコールバックです。この場合、コールバック/操作は、です。

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();

について読むことができます。 ここで :

コレクションはまた、高次メッセージもサポートしています。 は、コレクションに対して一般的なアクションを実行するためのショートカットです。