当前位置: 首页 > 文档资料 > FuelPHP 中文文档 >

迁移 - 一般

优质
小牛编辑
126浏览
2023-12-01

迁移是一种方便的方法,让你在一个结构化和有组织的方式下改变你的资料库。你可以手工编辑 SQL 片段,然后负责通知其他开发人员需要去执行它们。你也必须保持追蹤那些在下次布署时,需要针对生产机器执行的变化。

资料表 `migration` 追蹤那些已经被运行的迁移,因此你所需要做的,就只是更新你的应用程序档案,并呼叫 Migrate::current() 以计算出应该被运行的迁移。current 版本能在 core/config/migration.php 里找到,所以就像任何其他配置档案一样,你应该複製一份到 app/config 进行修改。

配置

类型预设描述
folder字串
					'migrations/'
				
迁移档案将被找到的文件夹。
connection字串
					null
				
要用来写入迁移的资料库连线的配置名称。
table字串
					'migration'
				
用来储存迁移资料的资料库表。

请注意: 在运行迁移之后,配置文件将被覆写版本资讯。这些版本号在内部使用,并且不应该被改变。

建立迁移

在 app/migrations 文件夹中建立一个档案。前缀应为一个从 001 起递增的计数,不跳号且不重複。第一个将像 app/migrations/001_example.php

namespace Fuel\Migrations;

class Example
{

    function up()
    {
        \DBUtil::create_table('posts', array(
'id' => array('type' => 'int', 'constraint' => 5),
'title' => array('type' => 'varchar', 'constraint' => 100),
'body' => array('type' => 'text'),
		), array('id'));
    }

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

执行迁移

迁移可以两种方法执行:

  1. Migrate 类别
  2. Oil 提炼命令

Oil 命令使用提炼命令以呼叫迁移 任务

$ php oil refine migrate
$ php oil refine migrate:current
$ php oil refine migrate:up
$ php oil refine migrate:down
$ php oil refine migrate --version=10

迁移也支援模组和套件,如果你想要迁移全部的话, 可以在 oil 命令列指定,或只指定类别和(或)套件。如果你这样做,你可以使用 '--default', 以表明你要包含应用程序的迁移。

$ php oil refine migrate -all
$ php oil refine migrate --modules=module1,module2 --packages=package1
$ php oil refine migrate:up --packages=package1
$ php oil refine migrate:down --modules=module1,module2 --default
$ php oil refine migrate --version=10

请注意: migrate:current 任务符合你的架构到被列在 fuel/[app|core]/config/migrate.php 里的版本,就像你才刚得到一份应用程序的副本,该副本最新的迁移不被认为是稳定的。使用 Oil 进行迁移将会修改此迁移配置版号, 所以 current 命令在许多情况下将是不相关的。

略过迁移

你可以藉由使你的 up()down() 方法回传 false 来中断迁移处理。 如果你的迁移具有外部相依性,这可能是有用的,例如, 在不同的迁移中建立一张表的存在。

这将只中断目前被处理的迁移堆叠,无论应用程序迁移,或者在一个单一模组或套件的迁移。 所有在其他堆叠的迁移将正常被处理。