# laravel seeder and factory https://hackmd.io/@javck/ByJgF8HRP/%2F%40javck%2FSk9yrIf5I 不要用create https://learnku.com/laravel/t/2066/the-correct-method-for-filling-large-quantity-of-false-data ## factory **此為5.x版本寫法** ``` \\Database\seeders\UserSeeder.php factory(App\User::class,100)->create(); //建立users表格的假資料,共生成100筆 ``` **此為8.x版本寫法** ``` \\Database\seeders\UserSeeder.php User::factory()->times(100)->create(); //建立users表格的假資料,共生成100筆 ``` factory()的最後面可以接create().make()以及raw() * create() 用Factory生成模型物件的集合後並據此存成資料庫資料 * make() 用Factory生成模型物件的集合 * raw() 用Factory生成資料的陣列 ## faker ``` Faker套件 使用Faker來生成假資料 $faker = Faker\Factory::create('zh_TW'); 使用繁中語系 $faker->name 取得名字 $faker->randomDigit 取得0~9的隨機數字 $faker->randomDigitNot(0) 取得1~9的隨機數字 $faker->numberBetween(1,100) 取得1~100的隨機數字 $faker->address 取得地址 $faker->sentence($nbWords =3) 使用3個單字的句子 $faker->text 取得文章 $faker->realText($nbWords = 10) 取得字數為多少的中文內容 $faker->url 取得網址 $faker->imageurl($width = 640 , $height = 480) 取得圖片網址 $faker->unique()->email 取得Email,需為唯一 $faker->optional()->word 取得文字,偶而會得到null $evenValidator = function($digit){ return $digit % 2 ==0; } $faker->valid($evenValidator)->randomDigit; 取得符合驗證規則的值 ``` ## 外key ![](https://i.imgur.com/wUWYnYu.png) 還沒試過 可以試看看 ## comment 互動 你可以看seeder那邊 有comment的變數 ### 指令 call可以調用 info預設是綠色 成功的意思 ![](https://i.imgur.com/oZNHHqe.png) confirm預設是false 所以提示那邊會[no] 可以把confirm第二參數改成true 這樣他按任何鍵都是true了 ![](https://i.imgur.com/BgmIPIT.png) ### 指令 要輸入的 ask ![](https://i.imgur.com/fqt1o9B.png) 第一 ask第二參數 是預設 第二 ask出來的是string 所以要轉int ### 防呆 如果他輸入的是0 下面seeder會出錯 因為最少要一才能執行 使用max() function 它會讓實例最少是一個 我追過去看好像是carbon的輔助涵式 ![](https://i.imgur.com/P2OvuOO.png) ###### tags: `Laravel`