我想添加名称为' accept_loc'的列,输入' VARCHAR'到3个数据库表(使用来自codeigniter的dbforge库)Assum它们被命名为t1,t2,t3。
t1结构:
t2结构:
t3结构:
如果我在迁移功能中使用了以下代码:
$fields = array(
'accept_lat' => array(
'accept_loc' => 'VARCHAR',
'constraint' => '50',
'after' => 'id',
),
);
$this->dbforge->add_column('t1',$fields);
$this->dbforge->add_column('t2',$fields);
$this->dbforge->add_column('t3',$fields);
结果:
t1结构:
t2结构:
t3结构:
它不是一个好看的结构。如何在“pick_up_loc”之前添加列?所有这些(n个数据库表)。
答案 0 :(得分:1)
请尝试将后置换成大写字母,即' AFTER',after
密钥中有一个错误,并且提到已修复here。
$fields = array(
'accept_lat' => array(
'accept_loc' => 'VARCHAR',
'constraint' => '50',
'AFTER' => 'id'
)
);
答案 1 :(得分:1)
add_column()中的第三个参数是$ after_field。因此,您不能在之前添加该列,但可以这样做:
$this->dbforge->add_column('t1', $fields, 'bla_bla');
$this->dbforge->add_column('t2', $fields, 'id');
$this->dbforge->add_column('t3', $fields, 'bla_bla');
此外,您似乎正在命名字段“ accept_lat”,然后使用“ accept_loc”而不是“ type”元素,这会造成混乱。
答案 2 :(得分:0)
迟到聚会,但为了澄清您的代码,例如在t1上,应如下所示:
$fields = array(
'accept_lat' => array('type' => 'TEXT')
);
$this->dbforge->add_column('t1', $fields, 'id');
因此accept_lat将添加在表t1中的id列之后。