laravel使用Faker數據填充的方法介紹(代碼)

本篇文章給大家帶來的內容是關于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;

在模型工廠中,可以通過 FakerGenerator 來生成測試數據,編輯 database/factories/FakerUsersFactory.php

<?php  use FakerGenerator as Faker;  $factory->define(AppModelsFakerUser::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'),// 時間在 一年到五個月之間     ]; });

由上述代碼可以很直白的看出 FakerGenerator 的作用。它可以生成的數據類型有很多,更多的類型可以看下官方文檔,雖然是英文的,不過都有示例,簡單易懂;

Faker 生成的數據默認是英文,可以在 config/app.php 中將 faker_locale 設置為 zh_CN;

模型工廠寫好了,接下來就是調用。目光回到數據填充文件 database/seeds/FakerUsersSeeder.php,在 run() 方法中如下代碼

/**      * Run the database seeds.      *      * @return void      */     public function run()     {         factory(AppModelsFakerUser::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數據填充的方法介紹(代碼)

數據也是正確的

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享