Phalcon - Di chuyển cơ sở dữ liệu

Di chuyển cơ sở dữ liệu quan trọng vì những lý do sau:

  • Di chuyển cơ sở dữ liệu giúp chuyển dữ liệu giữa các loại lưu trữ được chỉ định.

  • Di chuyển cơ sở dữ liệu đề cập đến bối cảnh của các ứng dụng dựa trên web di chuyển từ nền tảng này sang nền tảng khác.

  • Quá trình này thường diễn ra để theo dõi dữ liệu đã lỗi thời.

Phalcon thực hiện quá trình di chuyển cơ sở dữ liệu theo cách sau:

Step 1 - Tạo một dự án có tên “dbProject” trong xampp/wamp danh mục.

Step 2 - Cấu hình dự án với khả năng kết nối cơ sở dữ liệu thích hợp.

<?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/', 
] ]);

Step 3- Thực hiện lệnh di chuyển các bảng có trong cơ sở dữ liệu “demodb”. Hiện tại, nó bao gồm một bảng “người dùng”.

Step 4 - Các tệp cơ sở dữ liệu đã di chuyển được lưu trữ bên trong thư mục di chuyển trong thư mục “ứng dụng”.

Do đó, các bảng đã được di chuyển thành công.

Tìm hiểu về giải phẫu của các tệp đã di chuyển

Tệp được di chuyển có một lớp duy nhất mở rộng Phalcon\Mvc\Model\Migrationlớp học. Lớp Migration trong Phalcon bao gồm các phương thứcup()down(). Cácup() phương thức được sử dụng để thực hiện di chuyển trong khi phương thức xuống sẽ khôi phục hoạt động.

Users.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() {  
   } 
}

Lớp UserMigration_100 như được hiển thị trong ví dụ trên bao gồm mảng kết hợp với bốn phần là:

  • Columns - Bao gồm một tập hợp các cột của bảng.

  • Indexes - Bao gồm một tập hợp các chỉ mục bảng.

  • References - Bao gồm tất cả các ràng buộc toàn vẹn tham chiếu (khóa ngoại).

  • Options - Mảng với một tập hợp các tùy chọn tạo bảng.

Như đã thấy trong ví dụ trên, phiên bản 1.0.0 của cơ sở dữ liệu đã được di chuyển thành công. Phalcon có thể bao gồm và chạy nhiều quá trình di chuyển tùy thuộc vào cách nội dung cơ sở dữ liệu được lưu giữ.