Php 如何在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

迁移后如何在CodeIgniter中播种数据? 一旦迁移完成,我想在表用户迁移之后为一些预定义用户添加种子

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",)',
    );
}