DEV Community

Marcelo Andrade R.
Marcelo Andrade R.

Posted on • Originally published at marceloandrader.github.io

Migraciones de base de datos con Phinx

Cuando uno piensa que una aplicación va a ser muy pequeña como para usar un framework completo o un framework que no tiene migraciones para base de datos, y los cambios a la base de datos generalmente se hacen a mano. Pero luego de un tiempo el sistema sigue creciendo y el equipo también crece, es importante que los cambios a la estructura de la base de datos sean versionados dentro del repositorio.

Aquí es donde entra una excelente herramienta phinx un paquete de PHP escrito por Rob Morgan que es agnóstico a los frameworks. Puede ser instalado en cualquier proyecto de PHP usando composer. Permite crear migraciones en el ambiente de desarrollo que una vez probadas completamente, serán aplicadas en ambientes de pruebas y producción.

Phinx permite a los desarrolladores alterar y manipular la base de datos en una manera clara y concisa. No ejecuta SQL directamente sino que ofrece una API poderosa para crear migraciones usando código PHP. Esto hace que las migraciones de phinx sean portables entre diferentes motores de bases de datos. Phinx sabe cuales migraciones ya se ejecutaron, así que no tienes que llevar cuenta de cuales migraciones tienen que ejecutarse.

Para instalar solo necesita:

$ composer require robmorgan/phinx
Enter fullscreen mode Exit fullscreen mode

Y crear una carpeta donde se almacentarán las migraciones, generalmente db/migrations.

Para iniciar el uso de phinx se ejecuta:

$ vendor/bin/phinx init
Enter fullscreen mode Exit fullscreen mode

Revisar el archivo phinx.php donde se debe especificar las diferentes conexiones a las bases de datos.

Para crear una nueva migración con

$ vendor/bin/phinx create CrearTablaUsuarios
Enter fullscreen mode Exit fullscreen mode

Una migración es una clase php con un nombre único, que se crea con el método change o que puede se puede cambiar para tener los métodos up y down. Y dentro de este método se utiliza el api de phinx para realizar las operaciones de cambios. Up para cambiar la estructura y down para reversar el cambio si hacemos un rollback. O simplemente change se usa para hacer el cambio y que phinx infiera la reversión. Por ejemplo las siguientes funciones son frecuentes al escribir migraciones:

$this->table('usuarios')
->addColumn('name', 'string')
->addColumn('created_on', 'datetime')
->create();

$this->table('usuarios')
->removeColumn('name', 'string')
->udpate();
Enter fullscreen mode Exit fullscreen mode

Se aplica la migración con:

$ vendor/bin/phinx migrate -e development
Enter fullscreen mode Exit fullscreen mode

donde -e indica que conexión definida en phinx.php usar

Se reversa la migración con:

$ vendor/bin/phinx rollback
Enter fullscreen mode Exit fullscreen mode

Verificar el estado del ambiente:

$ vendor/bin/phinx status
Enter fullscreen mode Exit fullscreen mode

También se puede usar phinx para crear archivos Seed para generar datos en la base de desarrollo. Pueden investigar más en la documentación que es muy completa.

Top comments (0)