摘要:導語做開發的時候,添加測試數據是必不可少的,內置了很方便的數據填充,下面是實例。數據填充創建數據填充文件創建完成后,我們可以在方法中手動添加幾條測試數據??聪驴倲悼倲禌]有問題,隨機看十條數據數據也是正確的。參考資料數據填充文檔數據庫測試。
導語
做開發的時候,添加測試數據是必不可少的,laravel 內置了很方便的數據填充,下面是實例。
數據遷移先創建數據模型和數據遷移 php artisan make:model Models/FakerUser -m;
只創建幾個簡單字段,編輯 database/migrations/{now_date}_create_faker_users_table.php 文件
/** * Run the migrations. * * @return void */ 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
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
測試好了,看下數據庫的數據是否生成正確??聪驴倲?br>
總數沒有問題,隨機看十條數據
數據也是正確的。
參考資料:數據填充、Laravel 文檔-數據庫測試、Faker。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31207.html
摘要:今晚不對,是昨晚,折騰一個的小項目,發現自動填充的中文數據顯示起來總不太美觀,于是開始琢磨如何填充中文數據進行測試。 今晚……不對,是昨晚,折騰一個的小項目,發現自動填充的中文數據顯示起來總不太美觀,于是開始琢磨如何填充中文數據進行測試。 然而一番搜索后驚奇的發現,官方、以及一些非官方的文檔均未提及這一功能。期間看到一篇他人的經驗文章,雖然可以實現這一需求,卻要求修改 vendor 目...
摘要:本文首發于作者這是一篇基礎教程,對標文檔中的數據遷移和數據填充。那么,中的數據庫遷移概念,就是用于解決團隊中保證數據庫結構一致的方案。和不同,如果多次執行就會進行多次數據填充。好了,數據遷移和數據填充的基本操作也就這些了。 showImg(https://segmentfault.com/img/remote/1460000012252769?w=648&h=422); 本文首發于 h...
摘要:我們很容易修改緩存驅動方式。這樣的話,我們甚至根本不必檢查緩存是否過期。與驅動相比,和的速度更快,所以建議在項目較大時使用外部緩存驅動。結論使用文件數據庫作為驅動,兩者在速度上沒有很明顯的區別。所以投資高速緩存是值得的。 showImg(https://segmentfault.com/img/remote/1460000014057714?w=1440&h=720); 緩存是web開...
摘要:不過除了使用加密,還可以使用原文鏈接使用來調試應用程序的數據以及使用一些總結參考資料參考資料使用來調試你的參考資料框架填充中文數據測試數據 使用Tinker來調試Laravel應用程序的數據以及使用Tinker一些總結 [toc] 今天我們將討論如何使用Laravel的一些鮮為人知的功能來快速讀取Laravel應用程序中的數據。我們可以使用Laravel的手工內置php artisan...
摘要:個人網站最近剛寫了一個手機在線播放的電影站使用日常手記更新使用的的查詢作用域的本地作用域去自定義可復用的約束集合,方便鏈式調用什么是本地查詢作用域本地作用域允許我們定義通用的約束集合以便在應用中復用。 關于作者 程序開發人員,不拘泥于語言與技術,目前主要從事PHP和前端開發,使用Laravel和VueJs,App端使用Apicloud混合式開發。合適和夠用是最完美的追求。 個人網站:...
閱讀 1459·2021-11-22 13:52
閱讀 1281·2021-09-29 09:34
閱讀 2690·2021-09-09 11:40
閱讀 3031·2019-08-30 15:54
閱讀 1255·2019-08-30 15:53
閱讀 971·2019-08-30 11:01
閱讀 1354·2019-08-29 17:22
閱讀 1943·2019-08-26 10:57