数据库播种
数据库播种是一种将数据添加到数据库的简单方法。它在开发过程中特别有用,在开发过程中需要使用样本数据来进行开发,但并不局限于此。播种器可以包含您不想包含在迁移中的静态数据,例如国家/地区或地理编码表、事件或设置信息等。
数据库播种器
数据库种子器是简单的类,必须具有一个 run()
方法,并扩展 CodeIgniter\Database\Seeder
。在 run()
中,类可以创建任何它需要的形式的数据。它可以通过 $this->db
和 $this->forge
分别访问数据库连接和 forge。种子文件必须存储在 **app/Database/Seeds** 目录中。文件名必须与类名匹配。
<?php
namespace App\Database\Seeds;
use CodeIgniter\Database\Seeder;
class SimpleSeeder extends Seeder
{
public function run()
{
$data = [
'username' => 'darth',
'email' => '[email protected]',
];
// Simple Queries
$this->db->query('INSERT INTO users (username, email) VALUES(:username:, :email:)', $data);
// Using Query Builder
$this->db->table('users')->insert($data);
}
}
嵌套种子器
种子器可以使用 call()
方法调用其他种子器。这使您可以轻松地组织一个中央种子器,但将任务组织到单独的种子器文件中。
<?php
namespace App\Database\Seeds;
use CodeIgniter\Database\Seeder;
class TestSeeder extends Seeder
{
public function run()
{
$this->call('UserSeeder');
$this->call('CountrySeeder');
$this->call('JobSeeder');
}
}
您也可以在 call()
方法中使用完全限定的类名,允许您将种子器保留在自动加载器可以找到的任何地方。这对于更模块化的代码库非常有用。
<?php
namespace App\Database\Seeds;
use CodeIgniter\Database\Seeder;
class SimpleSeeder extends Seeder
{
public function run()
{
$this->call('UserSeeder');
$this->call('My\Database\Seeds\CountrySeeder');
}
}
使用种子器
您可以通过数据库配置类获取主种子器的副本。
<?php
$seeder = \Config\Database::seeder();
$seeder->call('TestSeeder');
命令行播种
您也可以从命令行播种数据,作为迁移 CLI 工具的一部分,如果您不想创建专用控制器。
php spark db:seed TestSeeder
创建种子器文件
使用命令行,您可以轻松地生成种子文件。
php spark make:seeder user --suffix
上面的命令输出位于 **app/Database/Seeds** 目录的 **UserSeeder.php** 文件。
您可以通过提供 --namespace
选项来提供种子文件将存储的 root
命名空间。
对于 Unix
php spark make:seeder MySeeder --namespace Acme\\Blog
适用于 Windows
php spark make:seeder MySeeder --namespace Acme\Blog
如果 Acme\Blog
映射到 app/Blog 目录,则此命令将在 app/Blog/Database/Seeds 目录中生成 MySeeder.php 文件。
提供 --force
选项将覆盖目标目录中已有的文件。