Php 如何在codeigniter中播种数据
迁移后如何在CodeIgniter中播种数据? 一旦迁移完成,我想在表用户迁移之后为一些预定义用户添加种子Php 如何在codeigniter中播种数据,php,Php,迁移后如何在CodeIgniter中播种数据? 一旦迁移完成,我想在表用户迁移之后为一些预定义用户添加种子 defined('BASEPATH') OR exit('No direct script access allowed'); class Migration_Users extends CI_Migration { public function up() { $this->load->database(); $dbpref
defined('BASEPATH') OR exit('No direct script access allowed');
class Migration_Users extends CI_Migration {
public function up()
{
$this->load->database();
$dbprefix = $this->db->dbprefix;
$this->dbforge->add_field(array(
'id' => array(
'type' => 'INT',
'constraint' =>11,
'unsigned' => TRUE,
'auto_increment' => TRUE
),
'first_name' => array(
'type' => 'VARCHAR',
'constraint' => 50
),
'last_name' => array(
'type' => 'VARCHAR',
'constraint' => 50,
)
));
$this->dbforge->add_key('id', TRUE);
$this->dbforge->create_table('users');
}
public function down()
{
$this->dbforge->drop_table('users');
}
}
我知道这篇文章很老了,但它是谷歌搜索“迁移中的代码点火器种子”时的第一个结果。所以我想我会提供我的解决方案
在迁移的up和down方法中,您可以非常轻松地执行简单的$this->db->query($sql)
方法
在我的特殊情况下,我植入了一些静态散列数据,因此每次从种子数组创建SQL Insert查询时,都将这些值放入迁移的属性中,并在循环中从中读取
下面是我的种子迁移文件的一个经过编辑、简化的示例:
对于Codeignitor 4,这应该会有所帮助:这种方法的唯一问题是:它完全绕过了模型的所有业务逻辑,而且它也不适合您希望在Production中运行迁移的时候,我可以使用它。
<?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",)',
);
}