使用 Laravel artisan 的 tinker 快速填充测试数据

Laravel artisan[ 工匠,技工] 的 tinker 是一个 REPL (read-eval-print-loop),REPL 是指 交互式命令行界面,它可以让你输入一段代码去执行,并把执行结果直接打印到命令行界面里。初次看到界面,让我以为是python呢。(>>>三个向右的箭头)。 使用的应该是PsySH这里是官网,英文还可以的同学去看看。

废话少说,直奔主题。本文测试环境:windows 10 .laravel 5.5.44(可以通过 php artisan -V 查看)

1 首先打开cmd,跳转到项目目录下,执行

 php artisan make:model Models\Jack

会在app->Models中生成JackModel.php文件

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Jack extends Model
{
    //表名

    protected $table = 'jacks';

    //使用create_atupdate_at字段

    public $timestamps = true;

    //可以填充的字段

    protected $fillable = [

        'name',

        'age',

        'password',

        'img',

        'mobile',

        'bank',

        'address',

        'century',

        'city',

        'chrome',

        'country',

        'companyEmail',

        'email',

        'countryCode',

        'citySuffix',

        'creditCardNumber',

        'creditCardDetails',

        'date',

        'domainName',

        'firstName',

        'internetExplorer',

        'word',

        'words',

        'userAgent',

        'unixTime',

        'streetAddress',

        'title',

        'slug',

        'swiftBicNumber',

        'windowsPlatformToken',

        'sha1',

        'sha256',

        'shuffle',

        'safeEmail',

        'safeHexColor',

        'rgbCssColor',

        'safari',

        'ipv4',

        'localIpv4',

        'macAddress',

        'url',

        'monthName',

        'content',

        'status',

    ];

    //受保护的字段-这个字段不可写入

    protected $guarded = ['id'];
}

2 接着生成migration [迁移,移民]

php artisan make:migration Jack  [也可以php artisan make:model Models\Jack 添加 -m 选项一并生成migrate 文件]

会在database->migrations文件夹中生成类似名称为:2018_11_30_145730_jack.php的文件,打开文件,修改其中的up方法为下面内容:

 /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
            Schema::create('jacks', function (Blueprint $table) {
            
            $table->increments('id');

            $table->string('name');

            $table->integer('age');

            $table->string('password');

            $table->string('img');

            $table->string('mobile');

            $table->string('bank');

            $table->string('address');

            $table->string('century');

            $table->string('city');

            $table->string('chrome');

            $table->string('country');

            $table->string('companyEmail');

            $table->string('email');

            $table->string('countryCode');

            $table->string('citySuffix');

            $table->string('creditCardNumber');

            $table->string('creditCardDetails');

            $table->string('date');

            $table->string('domainName');

            $table->string('firstName');

            $table->string('internetExplorer');

            $table->string('word');

            $table->string('words');

            $table->string('userAgent');

            $table->string('unixTime');

            $table->string('streetAddress');

            $table->string('title');

            $table->string('slug');

            $table->string('swiftBicNumber');

            $table->string('windowsPlatformToken');

            $table->string('sha1');

            $table->string('sha256');

            $table->string('shuffle');

            $table->string('safeEmail');

            $table->string('safeHexColor');

            $table->string('rgbCssColor');

            $table->string('safari');

            $table->string('ipv4');

            $table->string('localIpv4');

            $table->string('macAddress');

            $table->string('url');

            $table->string('monthName');

            $table->longText('content');

            $table->smallInteger('status');

            $table->timestamps();
        });
    }

3 生成数据表jacks

php artisan migrate --path=/database/migrations/2018_11_30_145730_jack.php

查看所连接的数据库,应该有jacks表生成.

4 填充数据-生成Factory文件

php artisan make:factory JackFactory

会在database->factories文件夹中生成JackFactory.php

<?php

use Faker\Generator as Faker;

$factory->define(App\Models\Jack::class, function (Faker $faker) {
    return [


    ];
});

编辑return的数组内容

        'name' => $faker->name,

        'age' => $faker->numberBetween(15,90),

        'password'=>str_random(6),

        'img'=>$faker->imageUrl(),

        'mobile' => $faker->phoneNumber,

        'bank'=>$faker->bankAccountNumber,

        'address'=>$faker->address,

        'century'=>$faker->century,

        'city'=>$faker->city,

        'chrome'=>$faker->chrome,

        'country'=>$faker->country,

        'companyEmail'=>$faker->companyEmail,

        'email'=>$faker->email,

        'countryCode'=>$faker->countryCode,

        'citySuffix'=>$faker->citySuffix,

        'creditCardNumber'=>$faker->creditCardNumber,

        'creditCardDetails'=>json_encode($faker->creditCardDetails),

        'date'=>$faker->date('Y-m-d H:i:s','now'),

        'domainName'=>$faker->domainName,

        'firstName'=>$faker->firstName,

        'internetExplorer'=>$faker->internetExplorer,

        'word'=>$faker->word,

        'words'=>$faker->words(5,true),

        'userAgent'=>$faker->userAgent,

        'unixTime'=>$faker->unixTime,

        'streetAddress'=>$faker->streetAddress,

        'title'=>$faker->sentence,

        'slug'=>$faker->slug(20,false),

        'swiftBicNumber'=>$faker->swiftBicNumber,

        'windowsPlatformToken'=>$faker->windowsPlatformToken,

        'sha1'=>$faker->sha1,

        'sha256'=>$faker->sha256,

        'shuffle'=>$faker->shuffle('abcdefghijklmnopqrst'),

        'safeEmail'=>$faker->safeEmail,

        'safeHexColor'=>$faker->safeHexColor,

        'rgbCssColor'=>$faker->rgbCssColor,

        'safari'=>$faker->safari,

        'ipv4'=>$faker->ipv4,

        'localIpv4'=>$faker->localIpv4,

        'macAddress'=>$faker->macAddress,

        'url'=>$faker->url,

        'monthName'=>$faker->monthName,

        'content'=>$faker->text(500),

        'status' => random_int(0,1)

5 接着进入tinker

php artisan tinker

在tinker中执行:

 factory(App\Models\Jack::class,50)->create();

第一个参数为app->Models文件夹中的Jack的类,第二个参数是调用50次, 执行完毕后,jacks表里面应该会有50条数据。至此目的达成.

PS:如果有错误提示,可以退出tinker 执行,php artisan cache:clear

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注