- Phalcon 教程
- Phalcon - 主页
- Phalcon - 概述
- Phalcon - 环境设置
- Phalcon - 应用程序结构
- Phalcon - 功能
- Phalcon - 配置
- Phalcon - 控制器
- Phalcon - 模型
- Phalcon - 景观
- Phalcon - 路由
- Phalcon - 数据库连接
- Phalcon - 切换数据库
- Phalcon - 脚手架应用
- Phalcon - 查询语言
- Phalcon - 数据库迁移
- Phalcon - Cookie 管理
- Phalcon - 会话管理
- Phalcon - 多语言支持
- Phalcon - 资产管理
- Phalcon - 使用表单
- Phalcon - 对象文档映射器
- Phalcon - 安全功能
- Phalcon 有用资源
- Phalcon - 快速指南
- Phalcon - 有用资源
- Phalcon - 讨论
Phalcon - 数据库迁移
数据库迁移很重要,原因如下:
数据库迁移有助于在指定存储类型之间传输数据。
数据库迁移是指基于 Web 的应用程序从一个平台迁移到另一个平台的环境。
此过程通常是为了跟踪过时的数据。
Phalcon 按以下方式执行数据库迁移过程 -
步骤 1 -在xampp/wamp目录中创建一个名为“dbProject”的项目。
步骤 2 - 使用适当的数据库连接配置项目。
<?php
/*
* Modified: preppend directory path of current file,
because of this file own different ENV under between Apache and command line.
* NOTE: please remove this comment.
*/
defined('BASE_PATH') || define('BASE_PATH', getenv('BASE_PATH') ?: realpath(dirname(__FILE__) . '/../..'));
defined('APP_PATH') || define('APP_PATH', BASE_PATH . '/app');
return new \Phalcon\Config(['database' => [
'adapter' => 'Mysql',
'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'demodb',
'charset' => 'utf8', ],
'application' => [ 'appDir' => APP_PATH . '/',
'controllersDir' => APP_PATH .
'/controllers/', 'modelsDir' => APP_PATH .
'/models/', 'migrationsDir' => APP_PATH .
'/migrations/', 'viewsDir' => APP_PATH .
'/views/','pluginsDir' => APP_PATH .
'/plugins/', 'libraryDir' => APP_PATH .
'/library/', 'cacheDir' => BASE_PATH .
'/cache/', 'baseUri' => '/dbProject/',
] ]);
步骤 3 - 执行命令以迁移数据库“demodb”中包含的表。目前,它包括一张表“users”。
步骤 4 - 迁移的数据库文件存储在“app”文件夹内的迁移目录中。
这样,表就迁移成功了。
了解迁移文件的剖析
迁移的文件有一个独特的类,它扩展了Phalcon\Mvc\Model\Migration类。Phalcon 中的 Migration 类包括up()和down()方法。up ()方法用于执行迁移,而 down 方法则回滚操作。
用户.php
<?php
use Phalcon\Db\Column;
use Phalcon\Db\Index;
use Phalcon\Db\Reference;
use Phalcon\Mvc\Model\Migration;
/**
* Class UserMigration_100
*/
class UserMigration_100 extends Migration {
/**
* Define the table structure
*
* @return void
*/
public function morph() {
$this->morphTable('user', [
'columns' => [
new Column( 'Id', [
'type' => Column::TYPE_INTEGER,
'notNull' => true,
'autoIncrement' => true,
'size' => 11, 'first' => true ] ),
new Column( 'username', [
'type' => Column::TYPE_VARCHAR,
'notNull' => true,
'size' => 40,
'after' => 'Id' ] ),
new Column( 'email', [
'type' => Column::TYPE_VARCHAR,
'notNull' => true,
'size' => 40,
'after' => 'username' ] ),
new Column( 'password', [
'type' => Column::TYPE_VARCHAR,
'notNull' => true,
'size' => 10,
'after' => 'email' ] )
],
'indexes' => [new Index('PRIMARY', ['Id'], 'PRIMARY') ],
'options' => [ 'TABLE_TYPE' => 'BASE TABLE',
'AUTO_INCREMENT' => '3', 'ENGINE' => 'InnoDB',
'TABLE_COLLATION' => 'latin1_swedish_ci' ],
] );
}
/**
* Run the migrations
* * @return void
*/
public function up() {
}
/**
* Reverse the migrations
*
* @return void
*/
public function down() {
}
}
如上例所示,类UserMigration_100包含具有四个部分的关联数组,它们是 -
列- 包括一组表列。
索引- 包括一组表索引。
引用- 包括所有引用完整性约束(外键)。
选项- 具有一组表创建选项的数组。
如上例所示,1.0.0 版本的数据库已成功迁移。Phalcon 可能包含并运行多个迁移过程,具体取决于数据库内容的保存方式。