Phalcon - migracja bazy danych
Migracja bazy danych jest ważna z następujących powodów -
Migracja bazy danych pomaga w przenoszeniu danych między określonymi typami pamięci.
Migracja bazy danych odnosi się do kontekstu aplikacji internetowych migrujących z jednej platformy na drugą.
Ten proces zwykle ma na celu śledzenie danych, które są nieaktualne.
Phalcon przeprowadza proces migracji bazy danych w następujący sposób -
Step 1 - Utwórz projekt o nazwie “dbProject” w xampp/wamp informator.
Step 2 - Skonfiguruj projekt z odpowiednią łącznością z bazą danych.
<?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- Wykonaj polecenie migracji tabel zawartych w bazie danych „demodb”. Na razie zawiera jedną tabelę „użytkowników”.
Step 4 - Migrowane pliki bazy danych są przechowywane w katalogu migracji w folderze „app”.
W ten sposób tabele zostały pomyślnie zmigrowane.
Zrozumienie anatomii migrowanych plików
Migrowany plik ma unikalną klasę, która rozszerza Phalcon\Mvc\Model\Migrationklasa. Klasa Migration w Phalcon zawiera metodyup() i down(). Plikup() Metoda służy do wykonywania migracji, podczas gdy metoda w dół wycofuje operację.
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() {
}
}
Klasa UserMigration_100 jak pokazano w powyższym przykładzie zawiera tablicę asocjacyjną z czterema sekcjami, które są -
Columns - Zawiera zestaw kolumn tabeli.
Indexes - Zawiera zestaw indeksów tabeli.
References - Zawiera wszystkie ograniczenia integralności referencyjnej (klucz obcy).
Options - Tablica z zestawem opcji tworzenia tabeli.
Jak widać w powyższym przykładzie, wersja 1.0.0 bazy danych została pomyślnie zmigrowana. Phalcon może zawierać i uruchamiać wiele procesów migracji w zależności od sposobu przechowywania zawartości bazy danych.