前因:
前幾天,客戶要求做一個會員問答的系統,我就按流程做了,到了需要調用資料庫資料時,覺得一個個添加又有點笨~
解決過程:
後來查了查手冊,看看國外blog案例,我搞出來了個不錯的方法~~~
我的使用記錄已:
直到後面這個,顯示出,時間,就表明播種機運行成功了~
以下是使用官方過程
Seeder 的建立
在 Thinkphp5 項目中,我們可以在命令列輸入下面這條命令:
php think seed:create UserSeeder
建立一個 UserSeeder 檔案,建立成功之後你可以在 database/seeds 目錄下面看到:
database|-seeds|-|-UserSeeder.php
其內容如下:
<?phpuse think\migration\Seeder;class UserSeeder extends Seeder{ /** * Run Method. * * Write your database seeder using this method. * * More information on writing seeders is available here: * http://docs.phinx.org/en/latest/seeding.html */ public function run() { }}
代碼非常的簡單,預設的給出了一個 run 方法,現在我們都知道 seeder 檔案是用來產生類比資料的,而產生類比資料的代碼寫在 run 方法中就可以了。
Seeder 的 run 方法
在 run 方法中,我們可以隨意填寫了可以填充資料庫的任意代碼。這裡我就拋磚引玉啦:
要求:
給資料表 Users 類比產生100條資料。表結構如下:
| 欄位 |
說明 |
nickname |
呢稱 |
email |
郵箱 |
password |
密碼 |
收到需求後,我可以這樣寫:
<?phpuse think\migration\Seeder;class UserSeeder extends Seeder{ /** * Run Method. * * Write your database seeder using this method. * * More information on writing seeders is available here: * http://docs.phinx.org/en/latest/seeding.html */ public function run() { $rows = []; for ($i = 0; $i < 100; $i++) { $rows[] = [ 'nickname' => mt_rand(10000, 99999), 'email' => mt_rand(10000, 99999).'@qq.com', 'password' => md5('123456'), ]; } $this->table('users')->insert($rows)->save(); }}
注意:一定要調用 save() 方法,否則不會儲存的。
首先呢,我產生了100條資料,然後調用 $this->table('users')->insert($rows)->save(); 將產生的資料插入到資料庫的 Users 表中。是不是很簡單? ^ - ^.
執行 Seeder
Seeder 檔案定義好了之後,還必須得執行一下資料才能插入到資料庫中,我們可以這樣執行:
php think seed:run
執行成功提示: All Done. Took 0.0552s。可以看到:
php think seed:run