在Codeigniter迁移中添加外键

时间:2015-07-05 03:46:05

标签: php mysql codeigniter foreign-keys migration

有人可以帮我添加外键和Codeigniter迁移数据库吗? 这是代码:

public function up()
{
    $this->dbforge->add_field(array(
    'ID_PELAYANAN' => array(
    'type' => 'INT',
    'constraint' => 50,
    'auto_increment' => TRUE
    ),

    'THBLMUT' => array(
    'type' => 'VARCHAR',
    'constraint' => '6',
    ),

    'ID_DIST' => array(
    'type' => 'VARCHAR',
    'constraint' => '2',
    ),

    'ID_AREA' => array(
    'type' => 'VARCHAR',
    'constraint' => '5',
    ),

    'ID_RAYON' => array(
    'type' => 'VARCHAR',
    'constraint' => '5',
    ),

    'N_RAYON' => array(
    'type' => 'CHAR',
    'constraint' => '70',
    ),

    ));
    $this->dbforge->add_key('ID_PELAYANAN', TRUE);
    $this->dbforge->create_table('pelayanan');
}
public function down()
{
    $this->dbforge->drop_table('pelayanan');
    }
}

我想制作' ID_AREA',' ID_RAYON'作为Forein Key在此表中。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:10)

这有两种方法可以做到这一点。第一个使用create_table,另一个可以在向现有表添加字段时完成。

$this->dbforge->add_field('CONSTRAINT FOREIGN KEY (id) REFERENCES table(id)');

$this->dbforge->add_column('table',[
    'CONSTRAINT fk_id FOREIGN KEY(id) REFERENCES table(id)',
]);

答案 1 :(得分:2)

您可以在

之后编写一个普通的SQL查询来执行此操作
$this->dbforge->create_table('pelayanan');

见下面的例子

$this->db->query('ALTER TABLE `pelayanan` ADD FOREIGN KEY(`ID_AREA`) REFERENCES 'the_other_table_name'(`ID_AREA`) ON DELETE CASCADE ON UPDATE CASCADE;');

您可以对其他外键执行相同的操作

答案 2 :(得分:0)

有人在这里创建了一种方法:https://github.com/bcit-ci/CodeIgniter/issues/1762。不幸的是,到目前为止,你还是无法用开箱即用的codeigniter来做到这一点。 @ Godluck的方式也很好。