我使用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');
}
}
答案 0 :(得分:1)
迁移文件旨在相互构建。您无需在每次迁移中创建表。 Fuel将运行您的003
迁移,然后您的004
迁移将因桌子已存在而失败。
您的004
迁移应该只包含如何从之前的状态更新表的说明。即,添加新列。
迁移的“向下”也应该反过来。因此,004
迁移的down
应删除该列。