Phalcon - Migrasi Database
Migrasi database penting karena alasan berikut -
Migrasi database membantu dalam mentransfer data antara jenis penyimpanan yang ditentukan.
Migrasi database mengacu pada konteks aplikasi berbasis web yang bermigrasi dari satu platform ke platform lainnya.
Proses ini biasanya berlangsung untuk melacak data yang sudah usang.
Phalcon melakukan proses migrasi database dengan cara berikut -
Step 1 - Buat proyek bernama “dbProject” di xampp/wamp direktori.
Step 2 - Konfigurasi proyek dengan konektivitas database yang sesuai.
<?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- Jalankan perintah untuk migrasi tabel yang termasuk dalam database "demodb". Untuk saat ini, ini mencakup satu tabel "pengguna".
Step 4 - File database yang dimigrasi disimpan di dalam direktori migrasi dalam folder "app".
Dengan demikian, tabel berhasil dimigrasi.
Memahami Anatomi File yang Dimigrasi
File yang dimigrasi memiliki kelas unik yang meluas Phalcon\Mvc\Model\Migrationkelas. Kelas Migrasi di Phalcon menyertakan metodeup() dan down(). Ituup() metode digunakan untuk melakukan migrasi sementara metode turun memutar kembali operasi.
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() {
}
}
Kelas UserMigration_100 seperti yang ditunjukkan pada contoh di atas termasuk array asosiatif dengan empat bagian yaitu -
Columns - Termasuk satu set kolom tabel.
Indexes - Termasuk satu set indeks tabel.
References - Termasuk semua batasan integritas referensial (kunci asing).
Options - Larik dengan satu set opsi pembuatan tabel.
Seperti yang terlihat pada contoh di atas, database versi 1.0.0 berhasil dimigrasi. Phalcon dapat menyertakan dan menjalankan beberapa proses migrasi tergantung pada bagaimana konten database disimpan.