codecamp

CodeIgniter4 数据库填充

数据填充是一种简单的将数据添加到数据库的方式。这在开发的过程中特别有用,你只需要准备开发中所需要的示例数据填充到数据库中,而且不仅如此,这些数据可以包括你不想要包括的迁移的静态数据,例如国家/地区,地理编码表,事件或设置信息等等。

数据填充是必须有 run() 方法的简单类,并继承于 CodeIgniterDatabaseSeeder 。在 run() 中,该类可以创建你所需要的任何类型的数据。该类可以创建需要的任何形式的数据。它可以分别通过建立 $this->db$this->forge 访问数据库连接。填充文件必须存储在 application/Database/Seeds 目录中。文件名和类名必须保持一致。

// application/Database/Seeds/SimpleSeeder.php
class SimpleSeeder extends \CodeIgniter\Database\Seeder
{
        public function run()
        {
                $data = [
                        'username' => 'darth',
                        'email' => 'darth@theempire.com'
                ];


                // Simple Queries
                $this->db->query("INSERT INTO users (username, email) VALUES(:username, :email)",
                        $data
                );


                // Using Query Builder
                $this->db->table('users')->insert($data);
        }
}

嵌套数据填充

你可以使用 call() 方法来运行其他的 seed 类。这允许你更容易使用 seeder,而且同时也将任务分发到各个 seeder 文件当中:

class TestSeeder extends \CodeIgniter\Database\Seeder
{
        public function run()
        {
                $this->call('UserSeeder');
                $this->call('CountrySeeder');
                $this->call('JobSeeder');
        }
}

你也可以在 call() 方法中使用完全合格的类名,使你的 seeder 在任何地方都可以更好的加载。这对于更多模块化代码库来说非常方便:

public function run()
{
        $this->call('UserSeeder');
        $this->call('My\Database\Seeds\CountrySeeder');
}

使用 Seeders

你可以通过数据库配置类获取主 seeder:

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

命令行填充数

如果不想创建专用控制器,也可以从命令行填充数据,作为 Migrations CLI 工具的一部分:

> php index.php migrations seed TestSeeder
CodeIgniter4 数据库迁移
CodeIgniter4 缓存驱动器
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }