首頁  >  文章  >  php框架  >  laravel使用Faker資料填充的方法介紹(程式碼)

laravel使用Faker資料填充的方法介紹(程式碼)

不言
不言轉載
2019-04-12 10:02:014102瀏覽

這篇文章帶給大家的內容是關於laravel使用Faker資料填充的方法介紹(程式碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

導語:做開發的時候,加入測試資料是不可或缺的,laravel 內建了很方便的資料填充,下面是實例。

資料遷移

先建立資料模型與資料遷移php artisan make:model Models/FakerUser -m;

##只建立幾個簡單字段,編輯

database/migrations/{now_date}_create_faker_users_table.php 檔案

/**
     * Run the migrations.
     *
     * @return void
     */7
    public function up()
    {
        Schema::create('faker_users', function (Blueprint $table) {
            $table->increments('id');
            $table->char('name', 20)->comment('姓名');
            $table->string('email', 50)->comment('邮箱');
            $table->tinyInteger('age')->comment('年龄');
            $table->char('city', 20)->comment('城市');
            $table->timestamps();
        });

        DB::statement("ALTER TABLE `faker_users` comment'测试用户表'"); // 表注释
    }
執行資料遷移

php artisan migrate 後資料表建立完成。

資料填充

建立資料填充檔案

php artisan make:seeder FakerUsersSeeder;

#建立完成後,我們可以在

run() 方法中手動新增幾個測試資料。但好的辦法,是使用模型工廠,接下來把注意力轉移到模型工廠中;

建立模型工廠

php artisan make:factory FakerUsersFactory;

在模型工廠中,可以透過

Faker\Generator 來產生測試數據,編輯database/factories/FakerUsersFactory.php
#

<?php use Faker\Generator as Faker;

$factory->define(\App\Models\FakerUser::class, function (Faker $faker) {
    return [
        'name' => $faker->name,
        'email' => $faker->safeEmail,
        'age' => $faker->numberBetween(8, 80),// 数字在 8-80 之间随机
        'city' => $faker->city,
        'created_at' => $faker->dateTimeBetween('-3 year', '-1 year'),// 时间在 三年到一年 之间
        'updated_at' => $faker->dateTimeBetween('-1 year', '-5 month'),// 时间在 一年到五个月之间
    ];
});
由上述程式碼可以很直白的看出

Faker\Generator 的作用。它可以產生的資料類型有很多,更多的類型可以看下官方文檔,雖然是英文的,不過都有示例,簡單易懂;

Faker 產生的資料默認是英文,可以在config/app.php 中將faker_locale 設定為zh_CN;

模型工廠寫好了,接下來就是調用。目光回到資料填充檔案

database/seeds/FakerUsersSeeder.php,在run() 方法中如下程式碼

/**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        factory(\App\Models\FakerUser::class)->times(1000)->make()->each(function ($model) {
            // 数据入库
            $model->save();
        });
    }
time() 是產生的次數,make() 方法是建立模型實例,在 each() 方法中將產生的模型實例入庫中保存。

最後就是執行資料填充,composer dump-autoload 之後 php artisan db:seed --class=FakerUsersSeeder

測試

#好了,看看資料庫的資料是否生成正確。看下總數


laravel使用Faker資料填充的方法介紹(程式碼)

總數沒有問題,隨機看十個資料


laravel使用Faker資料填充的方法介紹(程式碼)##資料也是正確的

以上是laravel使用Faker資料填充的方法介紹(程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除