DEV Community

Marcelo Andrade R.
Marcelo Andrade R.

Posted on • Originally published at marceloandrader.github.io

2 1

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.

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay