使用油CLI在FuelPHP中更改表结构

时间:2013-12-26 19:01:04

标签: php fuelphp

我使用oil generate CLI命令创建了一个表,并根据需要创建了表。

php oil generate scaffold <details>

现在我想更改几列并向表格strcutre添加一个新列。我用了精炼油然后跑了。

php oil refine migrate -all

但表格没有变化。下面提供了迁移详细信息(列的chnage - 'created')。

旧迁移文件: 003_create_categories.php

<?php

namespace Fuel\Migrations;

class Create_categories
{
    public function up()
    {
    \DBUtil::create_table('categories', array(
        'id' => array('constraint' => 11, 'type' => 'int', 'auto_increment' => true, 'unsigned' => true),
        'name' => array('constraint' => 255, 'type' => 'varchar'),
        'description' => array('type' => 'text'),
        'image' => array('constraint' => 255, 'type' => 'varchar'),
        'created' => array('type' => 'datetime'),
        'created_at' => array('constraint' => 11, 'type' => 'int', 'null' => true),
        'updated_at' => array('constraint' => 11, 'type' => 'int', 'null' => true),

    ), array('id'));
    }

    public function down() {
    \DBUtil::drop_table('categories');
    }
}

新迁移文件: 004_create_categories.php

<?php

namespace Fuel\Migrations;

class Create_categories
{
    public function up()
    {
    \DBUtil::create_table('categories', array(
        'id' => array('constraint' => 11, 'type' => 'int', 'auto_increment' => true, 'unsigned' => true),
        'name' => array('constraint' => 255, 'type' => 'varchar'),
        'description' => array('type' => 'text'),
        'image' => array('constraint' => 255, 'type' => 'varchar'),
        'status' => array('type' => 'tinyint'),
        'created_at' => array('constraint' => 11, 'type' => 'int', 'null' => true),
        'updated_at' => array('constraint' => 11, 'type' => 'int', 'null' => true),

    ), array('id'));
    }

    public function down() {
    \DBUtil::drop_table('categories');
    }
}

1 个答案:

答案 0 :(得分:1)

迁移文件旨在相互构建。您无需在每次迁移中创建表。 Fuel将运行您的003迁移,然后您的004迁移将因桌子已存在而失败。

您的004迁移应该只包含如何从之前的状态更新表的说明。即,添加新列。

迁移的“向下”也应该反过来。因此,004迁移的down应删除该列。