Phinx
PHP Migraciones de Base de Datos Para Todos.
¿Qué es Phinx?
Herramienta de migración de Base de Datos para PHP.
¿Qué es una migración?
Proceso de selección, preparación, extracción y transformación de datos en un sistema informático.
Scripts de migración
Secuencia de comandos
-
(UP) versión nueva de la BD.
-
(DOWN) versión anterior de la BD.
Importancia
-
Documentan el estado del esquema de la base de datos en cada punto de la vida de un sistema.
-
Facilitan el roll-back.
Importancia
Historia
-
Creado en 2012 por Rob Morgan.
-
800 pull requests.
-
En 2017 paso a ser parte de Cake Software Foundation.
Historia
¿Porqué usar Phinx?
-
Fácil instalación.
-
Configurable.
-
Independiente de Frameworks.
-
Ligero.
Admite
-
Migraciones escritas en PHP y SQL.
-
PHP; migraciones portátiles entre proveedores de BD.
-
SQL; crear manualmente consultas avanzadas.
Instalación
$ php composer.phar require robmorgan/phinx
$ php composer.phar install
$ vendor/bin/phinx
Ejecución
Comandos
Available commands:
breakpoint Manage breakpoints
create Create a new migration
help Displays help for a command
init Initialize the application for Phinx
list Lists commands
migrate Migrate the database
rollback Rollback the last or to a specific migration
status Show migration status
test Verify the configuration file
seed
seed:create Create a new database seeder
seed:run Run database seeders
$ vendor/bin/phinx list
Configuración
paths:
migrations: "%%PHINX_CONFIG_DIR%%/config/migration"
environments:
default_migration_table: phinx_migration
default_database: dev
dev:
adapter: mysql
host: localhost
name: dev_db
user: user
pass: password
port: 3306
test:
adapter: mysql
host: localhost
name: test_db
user: user
pass: password
port: 3306
Crear una migración
$ vendor/bin/phinx create MyFirstMigration
config/migration/20180912213646_my_first_migration.php
<?php
use Phinx\Migration\AbstractMigration;
class MyFirstMigration extends AbstractMigration
{
}
Metodo change
<?php
use Phinx\Migration\AbstractMigration;
class MyFirstMigration extends AbstractMigration
{
public function change()
{
// create the table
$table = $this->table('new_table');
$table->addColumn('new_table_id', 'integer')
->addColumn('created', 'datetime')
->create();
}
}
Metodos up y down
<?php
use Phinx\Migration\AbstractMigration;
class MyFirstMigration extends AbstractMigration
{
public function up(): void
{
$this->execute('
ALTER TABLE `new_table`
ADD COLUMN `new_column` VARCHAR(255) NULL AFTER `new_table_id`;
');
}
public function down(): void
{
$this->execute('
ALTER TABLE `new_table`
DROP COLUMN `new_column`;
');
}
}
Ejecutar migraciones
$ phinx migrate -e dev
$ phinx migrate -e dev -t 20110103081132
Rollback de migraciones
$ phinx rollback -e dev
$ phinx rollback -e dev -t 20120103083322
$ phinx rollback -e development -d 2012
$ phinx rollback -e development -d 201201
$ phinx rollback -e development -d 20120103
Revisar estado
$ phinx status -e dev
Fuentes
https://github.com/cakephp/phinx
https://phinx.org/
http://docs.phinx.org/
https://robmorgan.id.au/
@_rjm_
Por su atención
¡ G R A C I A S !
@sagmmd
Sr Software Engineer en
PHINX
By smmd
PHINX
- 346