有人能帮我在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键。我该如何解决此问题?
这里有两种方法。第一种方法适用于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)',
]);
您可以在之后编写一个普通的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;');
您可以对其他外键执行相同操作
有人在这里创建了一种方法:https://github.com/bcit-ci/CodeIgniter/issues/1762.不幸的是,到目前为止,你仍然无法使用开箱即用的代码点火器@祝你好运的方式也很有效。