iT邦幫忙

第 11 屆 iThome 鐵人賽

1
Software Development

在後花園遇見LP,Laravel及PHP的甜蜜糾纏,火熱上映系列 第 34

✾後花園D34✾-假的,這一切都是假的( Factory 使用 )

本系列文的環境狀態,可點擊此連結後花園環境參考

假的,這一切都是假的!
我的眼睛業障沒有很重~~~

現在就來做點假貨資料,給自己看看吧!
節省自己動手鍵入測試用的資料,讓程式自動幫你帶進多筆練習用的資料庫資料吧!

建立 Factory 檔案

新增一個 Factory 的檔案,並參照對應的 Model。
--model={ 參照的 Eloquent Model }

$ php artisan make:factory FlowerFactory --model=Flower

填入對應列位及假資料類型

假貨資料要尋找適合類型,可參考 Faker

路徑:database/factories/FlowerFactory.php

<?php

use App\Flower;
use Faker\Generator as Faker;
use Illuminate\Support\Str;

$factory->define(Flower::class, function (Faker $faker) {

    $api_token = Str::random(10);

    return [
        'name'=>$faker->firstName,
        'email'=>$faker->unique()->safeEmail,
        'password'=>rand(1,999999999),
        'api_token'=> Str::random(10),
    ];
});

開始製造假貨資料吧

在 Terminal 輸入指令

$ php artisan tinker
>>> factory(App\Flower::class,10)->create()

正常呈現畫面

成功的話,會跑出建立的假貨資料,要跳出 tinker REPL 畫面,請按 Ctrl+c 。

不正常呈現畫面( PHP 7.3 以上可能會發生 )

不會跑出假貨資料,直接自行跳出 tinker REPL 畫面。

解決辦法:

在 Terminal 輸入指令

$ cd ~/.config/psysh    
$ vim config.php          

如果不會用 vim 編輯器,可在 ~/.config/psysh 資料夾底下,直接新增 config.php 檔案,並放入下列程式碼後儲存,再重新執行 $ php artisan tinker

<?php
    return [
        'usePcntl' => false,
    ];

什麼是 tinker ?

Laravel artisan 的 tinker 是一個 REPL ,是指交互式命令行介面,當輸入一段程式碼去執行,會直接將结果輸出在( CLI )命令行介面裡。

※ REPL (read-eval-print loop):「讀取-求值-輸出」循環

參考連結:
❁ Laravel 官方 - Database Testing
❁ Charleen大 - Day24-Laravel新手基礎訓-Eloquent: Many to Many (Factory 與 Tinker
❁ tinker 一直退出?


上一篇
✾後花園D33✾- Migration 列名(欄名) 新增、修改、刪除
下一篇
✾後花園D35✾- tinker 異常跳出
系列文
在後花園遇見LP,Laravel及PHP的甜蜜糾纏,火熱上映49
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

我要留言

立即登入留言