Codeigniter 如何在dbforge中在另一列之前添加列?

Codeigniter 如何在dbforge中在另一列之前添加列?,codeigniter,dbforge,Codeigniter,Dbforge,我想在3个数据库表中添加名为“accept_loc”的列,键入“VARCHAR”(使用codeigniter中的dbforge库),因为它们的名称分别为t1、t2、t3 t1结构: 身份证 诸如此类 提货地点 t2结构: 身份证 提货地点 t3结构: 身份证 诸如此类 提货地点 如果我在向上迁移函数中使用以下代码: $fields = array( 'accept_lat' => array( 'accept_loc' =>

我想在3个数据库表中添加名为“accept_loc”的列,键入“VARCHAR”(使用codeigniter中的dbforge库),因为它们的名称分别为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个数据库表)。

请尝试将after大写,即“after”,在键被修复后,
中有一个bug


请尝试将after大写,即'after',在
after
键中有一个bug,已修复


add_column()中的第三个参数是$after_字段。因此,您不能在另一列之前添加列,但您可以这样做:

$this->dbforge->add_column('t1', $fields, 'bla_bla');
$this->dbforge->add_column('t2', $fields, 'id');
$this->dbforge->add_column('t3', $fields, 'bla_bla');

此外,您似乎将字段命名为“accept\u lat”,然后使用“accept\u loc”而不是“type”元素,这会使事情变得混乱。

add\u column()中的第三个参数是$after\u 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\u lat”,然后使用“accept\u loc”而不是“type”元素,这会使事情变得混乱。

晚会迟到,但为了澄清您的代码,例如t1上的代码,应该如下所示:

 $fields = array(
            'accept_lat' => array('type' => 'TEXT')
);
    $this->dbforge->add_column('t1', $fields, 'id');

因此,accept_lat将添加到表t1中的id列之后

派对迟到,但为了澄清您的代码,例如t1,应该如下所示:

 $fields = array(
            'accept_lat' => array('type' => 'TEXT')
);
    $this->dbforge->add_column('t1', $fields, 'id');
因此,accept_lat将添加到表t1中的id列之后