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

xpszyzbs  于 12个月前  发布在  其他
关注(0)|答案(4)|浏览(86)

我想添加名为'accept_loc'的列,类型'VARCHAR'到3个数据库表(使用codeigniter的dbforge库)假设它们被命名为t1,t2,t3。

t1结构:

  • id
  • bla_bla
  • 拾取位置
  • ....
    t2结构:
  • id
  • 拾取位置
  • ....
    t3结构:
  • id
  • bla_bla
  • 拾取位置
  • ....

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

$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
  • 拾取位置
  • ....
    t2结构:
  • id
  • 接受锁定
  • 拾取位置
  • ....
    t3结构:
  • id
  • 接受锁定
  • bla_bla
  • 拾取位置
  • ....

这不是一个好看的结构。我如何在所有的数据库表(n个数据库表)中添加pick_up_loc之前的列。

cngwdvgl

cngwdvgl1#

请尝试将后大写,即'AFTER',有一个错误,在该after键,并提到得到修复here .

$fields = array(
        'accept_lat' => array(
            'accept_loc' => 'VARCHAR',
            'constraint' => '50',
            'AFTER' => 'id'
        )
    );
imzjd6km

imzjd6km2#

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'元素,这让人感到困惑。

aiazj4mn

aiazj4mn3#

迟到了,但为了澄清你的代码,例如在t1上,应该看起来像这样:

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

所以accept_lat将被添加到表t1中的id列之后。

prdp8dxp

prdp8dxp4#

根据我们的评估,问题似乎与我们产品的功能无关。
请参阅https://codeigniter.com/userguide3/database/forge.html上的文档
请注意文档中提供的以下示例-它应该可以帮助您解决问题。
$this->dbforge->add_field(“"“label varchar(100)NOT NULL DEFAULT 'default label'""”);
如果问题仍然存在并且与我们的软件有关,请填写下面的表格。向我们提供问题的详细描述以及您所采取的措施。另外,请附上相关的屏幕截图,以帮助我们更好地理解这个问题。
请注意,您需要使用最新版本的dbForge Studio。

相关问题