摘要:導(dǎo)語做開發(fā)的時候,添加測試數(shù)據(jù)是必不可少的,內(nèi)置了很方便的數(shù)據(jù)填充,下面是實例。數(shù)據(jù)填充創(chuàng)建數(shù)據(jù)填充文件創(chuàng)建完成后,我們可以在方法中手動添加幾條測試數(shù)據(jù)。看下總數(shù)總數(shù)沒有問題,隨機(jī)看十條數(shù)據(jù)數(shù)據(jù)也是正確的。參考資料數(shù)據(jù)填充文檔數(shù)據(jù)庫測試。
導(dǎo)語
做開發(fā)的時候,添加測試數(shù)據(jù)是必不可少的,laravel 內(nèi)置了很方便的數(shù)據(jù)填充,下面是實例。
數(shù)據(jù)遷移先創(chuàng)建數(shù)據(jù)模型和數(shù)據(jù)遷移 php artisan make:model Models/FakerUser -m;
只創(chuàng)建幾個簡單字段,編輯 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"測試用戶表""); // 表注釋 }
運(yùn)行數(shù)據(jù)遷移 php artisan migrate 之后數(shù)據(jù)表創(chuàng)建完成。
數(shù)據(jù)填充創(chuàng)建數(shù)據(jù)填充文件 php artisan make:seeder FakerUsersSeeder;
創(chuàng)建完成后,我們可以在 run() 方法中手動添加幾條測試數(shù)據(jù)。但是好的辦法,是使用模型工廠,接下來把注意力轉(zhuǎn)移到模型工廠中;
創(chuàng)建模型工廠 php artisan make:factory FakerUsersFactory;
在模型工廠中,可以通過 FakerGenerator 來生成測試數(shù)據(jù),編輯 database/factories/FakerUsersFactory.php
define(AppModelsFakerUser::class, function (Faker $faker) { return [ "name" => $faker->name, "email" => $faker->safeEmail, "age" => $faker->numberBetween(8, 80),// 數(shù)字在 8-80 之間隨機(jī) "city" => $faker->city, "created_at" => $faker->dateTimeBetween("-3 year", "-1 year"),// 時間在 三年到一年 之間 "updated_at" => $faker->dateTimeBetween("-1 year", "-5 month"),// 時間在 一年到五個月之間 ]; });
由上述代碼可以很直白的看出 FakerGenerator 的作用。它可以生成的數(shù)據(jù)類型有很多,更多的類型可以看下官方文檔,雖然是英文的,不過都有示例,簡單易懂;
Faker 生成的數(shù)據(jù)默認(rèn)是英文,可以在 config/app.php 中將 faker_locale 設(shè)置為 zh_CN;
模型工廠寫好了,接下來就是調(diào)用。目光回到數(shù)據(jù)填充文件 database/seeds/FakerUsersSeeder.php,在 run() 方法中如下代碼
/** * Run the database seeds. * * @return void */ public function run() { factory(AppModelsFakerUser::class)->times(1000)->make()->each(function ($model) { // 數(shù)據(jù)入庫 $model->save(); }); }
time() 是生成的次數(shù),make() 方法是創(chuàng)建模型實例,在 each() 方法中將生成的模型實例入庫保存。
最后就是執(zhí)行數(shù)據(jù)填充,composer dump-autoload 之后 php artisan db:seed --class=FakerUsersSeeder
測試好了,看下數(shù)據(jù)庫的數(shù)據(jù)是否生成正確。看下總數(shù)
總數(shù)沒有問題,隨機(jī)看十條數(shù)據(jù)
數(shù)據(jù)也是正確的。
參考資料:數(shù)據(jù)填充、Laravel 文檔-數(shù)據(jù)庫測試、Faker。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/31207.html
摘要:今晚不對,是昨晚,折騰一個的小項目,發(fā)現(xiàn)自動填充的中文數(shù)據(jù)顯示起來總不太美觀,于是開始琢磨如何填充中文數(shù)據(jù)進(jìn)行測試。 今晚……不對,是昨晚,折騰一個的小項目,發(fā)現(xiàn)自動填充的中文數(shù)據(jù)顯示起來總不太美觀,于是開始琢磨如何填充中文數(shù)據(jù)進(jìn)行測試。 然而一番搜索后驚奇的發(fā)現(xiàn),官方、以及一些非官方的文檔均未提及這一功能。期間看到一篇他人的經(jīng)驗文章,雖然可以實現(xiàn)這一需求,卻要求修改 vendor 目...
摘要:本文首發(fā)于作者這是一篇基礎(chǔ)教程,對標(biāo)文檔中的數(shù)據(jù)遷移和數(shù)據(jù)填充。那么,中的數(shù)據(jù)庫遷移概念,就是用于解決團(tuán)隊中保證數(shù)據(jù)庫結(jié)構(gòu)一致的方案。和不同,如果多次執(zhí)行就會進(jìn)行多次數(shù)據(jù)填充。好了,數(shù)據(jù)遷移和數(shù)據(jù)填充的基本操作也就這些了。 showImg(https://segmentfault.com/img/remote/1460000012252769?w=648&h=422); 本文首發(fā)于 h...
摘要:我們很容易修改緩存驅(qū)動方式。這樣的話,我們甚至根本不必檢查緩存是否過期。與驅(qū)動相比,和的速度更快,所以建議在項目較大時使用外部緩存驅(qū)動。結(jié)論使用文件數(shù)據(jù)庫作為驅(qū)動,兩者在速度上沒有很明顯的區(qū)別。所以投資高速緩存是值得的。 showImg(https://segmentfault.com/img/remote/1460000014057714?w=1440&h=720); 緩存是web開...
摘要:不過除了使用加密,還可以使用原文鏈接使用來調(diào)試應(yīng)用程序的數(shù)據(jù)以及使用一些總結(jié)參考資料參考資料使用來調(diào)試你的參考資料框架填充中文數(shù)據(jù)測試數(shù)據(jù) 使用Tinker來調(diào)試Laravel應(yīng)用程序的數(shù)據(jù)以及使用Tinker一些總結(jié) [toc] 今天我們將討論如何使用Laravel的一些鮮為人知的功能來快速讀取Laravel應(yīng)用程序中的數(shù)據(jù)。我們可以使用Laravel的手工內(nèi)置php artisan...
摘要:個人網(wǎng)站最近剛寫了一個手機(jī)在線播放的電影站使用日常手記更新使用的的查詢作用域的本地作用域去自定義可復(fù)用的約束集合,方便鏈?zhǔn)秸{(diào)用什么是本地查詢作用域本地作用域允許我們定義通用的約束集合以便在應(yīng)用中復(fù)用。 關(guān)于作者 程序開發(fā)人員,不拘泥于語言與技術(shù),目前主要從事PHP和前端開發(fā),使用Laravel和VueJs,App端使用Apicloud混合式開發(fā)。合適和夠用是最完美的追求。 個人網(wǎng)站:...
閱讀 1490·2021-11-22 13:52
閱讀 1308·2021-09-29 09:34
閱讀 2715·2021-09-09 11:40
閱讀 3038·2019-08-30 15:54
閱讀 1265·2019-08-30 15:53
閱讀 979·2019-08-30 11:01
閱讀 1364·2019-08-29 17:22
閱讀 1957·2019-08-26 10:57