1

我想将名为“accept_loc”的列添加到 3 个数据库表中(使用 codeigniter 中的 dbforge 库),假设它们被命名为 t1、t2、t3。

t1结构:

  • ID
  • bla_bla
  • pick_up_loc
  • ……

t2结构:

  • ID
  • pick_up_loc
  • ……

t3结构:

  • ID
  • bla_bla
  • pick_up_loc
  • ……

如果我在向上迁移功能中使用以下代码:

$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结构:

  • ID
  • 接受定位
  • bla_bla
  • pick_up_loc
  • ……

t2结构:

  • ID
  • 接受定位
  • pick_up_loc
  • ……

t3结构:

  • ID
  • 接受定位
  • bla_bla
  • pick_up_loc
  • ……

这不是一个好看的结构。如何将“pick_up_loc”之前的列添加到所有这些(n 个数据库表)。

4

3 回答 3

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”元素,这会造成混淆。

于 2018-07-19T15:51:30.063 回答
1

请尝试将 after 设为大写,即“AFTER”,该after键中存在错误,并提到已在此处修复。

    $fields = array(
        'accept_lat' => array(
            'accept_loc' => 'VARCHAR',
            'constraint' => '50',
            'AFTER' => 'id'
        )
    );
于 2017-09-25T03:12:27.553 回答
0

迟到但要澄清您的代码,例如在 t1 上,应该如下所示:

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

所以accept_lat会加在t1表的id列之后。

于 2019-11-26T09:34:55.353 回答