本篇文章給大家帶來的內容是關于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
測試
好了,看下數據庫的數據是否生成正確。看下總數
總數沒有問題,隨機看十條數據
數據也是正確的