网站PHP框架之Laravel5.5(十三)Factory工厂伪造数据

步骤

设置Factories的生成字段

创建伪造数据

网站PHP框架之Laravel系列文章



设置Factories的生成字段

接着网站PHP框架之Laravel5.5(十二)使用Seeder方式向数据库填充数据的项目进行进一步的开发,我们在此项目中的users表中添加了身份字段role,Laravel默认给了我们一个UserFactory:/database/factories/UserFactory.php

define(App\User::class, function (Faker $faker) {
    static $password;

    return [
        'name' => $faker->name,
        'email' => $faker->unique()->safeEmail,
        'password' => $password ?: $password = bcrypt('secret'),
        'remember_token' => str_random(10),
    ];
});

调用了工厂($factory)的定义函数(define),定义了一个User类传入了一个可以伪造数据的$faker实例,在具体的函数中定义了表里面的字段:

  • name
  • email
  • password
  • remember_token

添加role字段数据生成器:

define(App\User::class, function (Faker $faker) {
    static $password;

    return [
        'name' => $faker->name,

        'email' => $faker->unique()->safeEmail,
        //邮箱是唯一性的所以调用unique方法下的safeEmail

        'password' => $password ?: $password = bcrypt('secret'),

        'remember_token' => str_random(10),

        'role' => array_random(['admin','member','guest'])
        //定义了三个身份随机
    ];
});

 

创建伪造数据

调用Laravel项目提供好的工具tinker容器

php artisan tinker

Psy Shell v0.9.9 (PHP 7.3.6 — cli) by Justin Hileman    //进入到Psy Shell

指定命名空间App后获取当前所有用户(为了表示Pay Shell的IDE环境,在每行代码前添加了>>>,后面才是输入的代码)

>>> namespace App;
>>> $users = User::all();

返回了一个Collection(数据集合)的数据:

=> Illuminate\Database\Eloquent\Collection {#2902
     all: [
       App\User {#2903
         id: 1,
         name: "admin",
         role: "admin",
         email: "[email protected]",
         created_at: null,
         updated_at: null,
       },
     ],
   }

调用factory指定类和待造的数据条数进行create创建:

>>> factory(User::class,300)->create()

返回了一系列类似这样的数据:

App\User {#3225
         name: "Dolly Kling",
         email: "[email protected]",
         role: "member",
         updated_at: "2019-07-12 19:59:48",
         created_at: "2019-07-12 19:59:48",
         id: 301,
       },

查看数据库管理软件查看users表:

网站PHP框架之Laravel5.5(十三)Factory工厂伪造数据_第1张图片

伪造数据成功!

补充一点,用完Psy shell记得退出:

>>> exit;

注意:

  1. 已经进入了Tinker之后再改动的XxxFactory.php的生产数据设定,在当前Psy Shell中是不会生效的,需要退出Shell之后重新进入Tinker
  2. 进入Tinker后做的第一件事是指定命名空间App

 

 

网站PHP框架之Laravel系列文章

 

 

 

 

 

你可能感兴趣的:(Laravel,PHP)