CodeIgniter4 數(shù)據(jù)庫填充

2020-08-14 14:24 更新

數(shù)據(jù)填充是一種簡單的將數(shù)據(jù)添加到數(shù)據(jù)庫的方式。這在開發(fā)的過程中特別有用,你只需要準(zhǔn)備開發(fā)中所需要的示例數(shù)據(jù)填充到數(shù)據(jù)庫中,而且不僅如此,這些數(shù)據(jù)可以包括你不想要包括的遷移的靜態(tài)數(shù)據(jù),例如國家/地區(qū),地理編碼表,事件或設(shè)置信息等等。

數(shù)據(jù)填充是必須有 run() 方法的簡單類,并繼承于 CodeIgniterDatabaseSeeder 。在 run() 中,該類可以創(chuàng)建你所需要的任何類型的數(shù)據(jù)。該類可以創(chuàng)建需要的任何形式的數(shù)據(jù)。它可以分別通過建立 $this->db$this->forge 訪問數(shù)據(jù)庫連接。填充文件必須存儲在 application/Database/Seeds 目錄中。文件名和類名必須保持一致。

  1. // application/Database/Seeds/SimpleSeeder.php
  2. class SimpleSeeder extends \CodeIgniter\Database\Seeder
  3. {
  4. public function run()
  5. {
  6. $data = [
  7. 'username' => 'darth',
  8. 'email' => 'darth@theempire.com'
  9. ];
  10. // Simple Queries
  11. $this->db->query("INSERT INTO users (username, email) VALUES(:username, :email)",
  12. $data
  13. );
  14. // Using Query Builder
  15. $this->db->table('users')->insert($data);
  16. }
  17. }

嵌套數(shù)據(jù)填充

你可以使用 call() 方法來運(yùn)行其他的 seed 類。這允許你更容易使用 seeder,而且同時也將任務(wù)分發(fā)到各個 seeder 文件當(dāng)中:

  1. class TestSeeder extends \CodeIgniter\Database\Seeder
  2. {
  3. public function run()
  4. {
  5. $this->call('UserSeeder');
  6. $this->call('CountrySeeder');
  7. $this->call('JobSeeder');
  8. }
  9. }

你也可以在 call() 方法中使用完全合格的類名,使你的 seeder 在任何地方都可以更好的加載。這對于更多模塊化代碼庫來說非常方便:

  1. public function run()
  2. {
  3. $this->call('UserSeeder');
  4. $this->call('My\Database\Seeds\CountrySeeder');
  5. }

使用 Seeders

你可以通過數(shù)據(jù)庫配置類獲取主 seeder:

  1. $seeder = \Config\Database::seeder();
  2. $seeder->call('TestSeeder');

命令行填充數(shù)

如果不想創(chuàng)建專用控制器,也可以從命令行填充數(shù)據(jù),作為 Migrations CLI 工具的一部分:

  1. > php index.php migrations seed TestSeeder
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號