我知道这篇文章已经很老了,但是当搜索“迁移中的代码点火器播种”时,它是谷歌中的第一个结果。所以我想我会提供我的解决方案。
您可以很轻松地执行简单的操作$this->db->query($sql)
迁移中的向上方法和向下方法。
对于我的特定情况,我正在播种一些静态哈希数据,因此将这些值放入迁移的属性中并在循环中读取它,每次从我的种子数组创建 SQL 插入查询。
这是我的种子迁移文件的一个经过编辑、简化的示例:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Migration_Seed_hash_table extends CI_Migration {
public function up()
{
foreach ($this->seedData as $seed ) {
$sql = 'INSERT INTO hash_table VALUES '.$seed;
$this->db->query($sql);
}
}
public function down()
{
foreach ($this->seedData as $seed) {
$hash = substr($seed, 2, 32);
$sql = 'DELETE FROM hash_table WHERE hash = \''.$hash.'\'';
$this->db->query($sql);
}
}
private $seedData = array(
'("2a96e53846b6232662fff87128061bbd", "Value A",)',
'("7c78ebb4c223c96fa9c5e6s3f73cc28e", "Value B",)',
'("ad2cb75a968ca5ef3255d924076e902f", "Value C",)',
);
}
注意:上面的示例已删除所有错误检查,以保持较小的大小以用于发布目的。
这当然取决于您的数据模式是否到位(在之前的迁移中),以及您的所有值$seedData
属性是 INSERT 查询的后/右侧,指定了所有列。
但你明白了。 =)