实例化 faker 类就只是为了使用 randomElement () 方法么?那为什么不直接使用 array_random () 函数?

实例化faker类就只是为了使用randomElement()方法么?那为什么不直接使用array_random()函数?
同样都是从数组中随机取出一个键值吧?难道randomElement()还有什么其他好处?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
最佳答案
  • 表面上,二者的作用一致,都是从一个数组中随机取元素,但:
    • array_random()实际上是借助了PHP原生函数 array_rand, 它产生的是伪随机数。
    • randomElement()借助了 mt_rand,它产生的是一个质量更好,速度更快的随机数。
  • 而且,用在这里等于是传授了获取faker实例的另一种方法, faker实例不仅仅可以在factory中通过依赖注入的方式实现,而且还可以通过app()这个函数来获取。
5年前 评论
讨论数量: 4
  • 表面上,二者的作用一致,都是从一个数组中随机取元素,但:
    • array_random()实际上是借助了PHP原生函数 array_rand, 它产生的是伪随机数。
    • randomElement()借助了 mt_rand,它产生的是一个质量更好,速度更快的随机数。
  • 而且,用在这里等于是传授了获取faker实例的另一种方法, faker实例不仅仅可以在factory中通过依赖注入的方式实现,而且还可以通过app()这个函数来获取。
5年前 评论
  • 表面上,二者的作用一致,都是从一个数组中随机取元素,但:
    • array_random()实际上是借助了PHP原生函数 array_rand, 它产生的是伪随机数。
    • randomElement()借助了 mt_rand,它产生的是一个质量更好,速度更快的随机数。
  • 而且,用在这里等于是传授了获取faker实例的另一种方法, faker实例不仅仅可以在factory中通过依赖注入的方式实现,而且还可以通过app()这个函数来获取。
5年前 评论

@hustnzj 老哥,蛮有水平的啊

5年前 评论

分享一个简洁的写法

         $topics = factory(Topic::class)
                        ->times(100)
                        ->make()
                        ->each(function ($topic, $index) {

                            // $topic->user_id = $faker->randomElement($user_ids);
                            $topic->user_id = User::all()->random()->id;

                            // $topic->category_id = $faker->randomElement($category_ids);
                            $topic->category_id = Category::all()->random()->id;
                        });

        // 将数据集合转换为数组,并插入到数据库中
        Topic::insert($topics->toArray());
5年前 评论

@daxiaobuzhaodiao 这样写是不是相当于执行了200次sql查询。。。

5年前 评论

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