each () 方法内部这里变量的含义

在下面这个方法中, each() 这块的用法,谁能科普一下

$statuses = factory(Status::class)
            ->times(100)
            ->make()
            ->each(function ($status) use ($faker, $user_ids) {
            $status->user_id = $faker->randomElement($user_ids);
        });

each(function ($status) use ($faker, $user_ids)

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

分步讲解一下吧.

  1. factory(Status::class)->times(2)->make() 返回一个对象(Illuminate\Database\Eloquent\Collection),俗称集合,如下,
    Illuminate\Database\Eloquent\Collection {#2907
     all: [
       App\Models\Status {#2892 //集合中的第一个元素
         content: ......., //第一个元素中的第一个属性
         created_at: "2006-09-16 07:27:09", //第一个元素中的第二个属性
         updated_at: "2004-05-12 00:16:28", //第一个元素中的第三个属性
       },
       App\Models\Status {#2906 //集合中的第二个元素
         content: ......, //第二个元素中的第一个属性
         created_at: "1974-01-28 01:09:27", //第二个元素中的第二个属性
         updated_at: "1976-09-26 04:06:17", ////第二个元素中的第三个属性
       },
     ],
    }
  2. 集合对象有一个方法叫做 each() ,可以接受一个回调函数, each() 方法会把集合中的元素一个一个的赋值给回调函数的第一个参数,第一次迭代 $status 装的是集合中的第一个元素,如下
    App\Models\Status {#2891
     content: ......,
     created_at: ......,
     updated_at: ......,
    }

    然后, $status->user_id = $faker->randomElement($user_ids) 这句代码,就是随机去一个数字,并赋值给 $status->user_id (这里会自动给 $status 新建一个字段 user_id ),你可以简单理解为 $status->user_id = 1,此时 $statuses[0] (集合中的第一个元素)就会多了一个属性,如下,

    App\Models\Status {#2891
     content: ......,
     created_at: ......,
     updated_at: .......,
     user_id: 1, // <----这里
    }

    然后进行第二次迭代, $status 装的是集合中的第二个元素,巴拉巴拉,就不啰嗦了.

至于 use ($faker, $user_ids) 的作用是使得在回调函数中可以使用本地变量.

5年前 评论
讨论数量: 4

分步讲解一下吧.

  1. factory(Status::class)->times(2)->make() 返回一个对象(Illuminate\Database\Eloquent\Collection),俗称集合,如下,
    Illuminate\Database\Eloquent\Collection {#2907
     all: [
       App\Models\Status {#2892 //集合中的第一个元素
         content: ......., //第一个元素中的第一个属性
         created_at: "2006-09-16 07:27:09", //第一个元素中的第二个属性
         updated_at: "2004-05-12 00:16:28", //第一个元素中的第三个属性
       },
       App\Models\Status {#2906 //集合中的第二个元素
         content: ......, //第二个元素中的第一个属性
         created_at: "1974-01-28 01:09:27", //第二个元素中的第二个属性
         updated_at: "1976-09-26 04:06:17", ////第二个元素中的第三个属性
       },
     ],
    }
  2. 集合对象有一个方法叫做 each() ,可以接受一个回调函数, each() 方法会把集合中的元素一个一个的赋值给回调函数的第一个参数,第一次迭代 $status 装的是集合中的第一个元素,如下
    App\Models\Status {#2891
     content: ......,
     created_at: ......,
     updated_at: ......,
    }

    然后, $status->user_id = $faker->randomElement($user_ids) 这句代码,就是随机去一个数字,并赋值给 $status->user_id (这里会自动给 $status 新建一个字段 user_id ),你可以简单理解为 $status->user_id = 1,此时 $statuses[0] (集合中的第一个元素)就会多了一个属性,如下,

    App\Models\Status {#2891
     content: ......,
     created_at: ......,
     updated_at: .......,
     user_id: 1, // <----这里
    }

    然后进行第二次迭代, $status 装的是集合中的第二个元素,巴拉巴拉,就不啰嗦了.

至于 use ($faker, $user_ids) 的作用是使得在回调函数中可以使用本地变量.

5年前 评论

分步讲解一下吧.

  1. factory(Status::class)->times(2)->make() 返回一个对象(Illuminate\Database\Eloquent\Collection),俗称集合,如下,
    Illuminate\Database\Eloquent\Collection {#2907
     all: [
       App\Models\Status {#2892 //集合中的第一个元素
         content: ......., //第一个元素中的第一个属性
         created_at: "2006-09-16 07:27:09", //第一个元素中的第二个属性
         updated_at: "2004-05-12 00:16:28", //第一个元素中的第三个属性
       },
       App\Models\Status {#2906 //集合中的第二个元素
         content: ......, //第二个元素中的第一个属性
         created_at: "1974-01-28 01:09:27", //第二个元素中的第二个属性
         updated_at: "1976-09-26 04:06:17", ////第二个元素中的第三个属性
       },
     ],
    }
  2. 集合对象有一个方法叫做 each() ,可以接受一个回调函数, each() 方法会把集合中的元素一个一个的赋值给回调函数的第一个参数,第一次迭代 $status 装的是集合中的第一个元素,如下
    App\Models\Status {#2891
     content: ......,
     created_at: ......,
     updated_at: ......,
    }

    然后, $status->user_id = $faker->randomElement($user_ids) 这句代码,就是随机去一个数字,并赋值给 $status->user_id (这里会自动给 $status 新建一个字段 user_id ),你可以简单理解为 $status->user_id = 1,此时 $statuses[0] (集合中的第一个元素)就会多了一个属性,如下,

    App\Models\Status {#2891
     content: ......,
     created_at: ......,
     updated_at: .......,
     user_id: 1, // <----这里
    }

    然后进行第二次迭代, $status 装的是集合中的第二个元素,巴拉巴拉,就不啰嗦了.

至于 use ($faker, $user_ids) 的作用是使得在回调函数中可以使用本地变量.

5年前 评论

file
1、调用微博工厂类 Status::class 生成 100 条 微博数据。
2、每条微博的 user_id 运用 laravel 自带的 faker 在 $user_ids 数组里随机一个获取一个

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!