No tienes acceso a esta clase

¬°Contin√ļa aprendiendo! √önete y comienza a potenciar tu carrera

Curso Avanzado de PHP

Curso Avanzado de PHP

Héctor Benitez

Héctor Benitez

Migraciones de bases de datos

25/35
Recursos

Cuando cambiamos el proyecto y tuvimos una nueva base de datos, toda nuestra información se perdió y no era muy sencillo saber cuál era la estructura que debía tener. Esto puede pasar por cambiar de entorno, cambiar de máquina u otras razones y en estos casos es importante no tener que construir la base de datos desde 0 siempre y más si se tienen muchas tablas y condiciones.
Aquí es donde entra en juego la migración de bases de datos la cual nos permite crear ciertos archivos y llevar un control sobre cómo va cambiando por si en un futuro cambiamos de máquina o entorno, podremos recrearla de manera sencilla.

Usaremos un proyecto llamado Phinx que fue utilizado en CakePHP el cual una vez instalado y usando el comando vendor/bin/phinx podremos ver la documentación y ayuda acerca de cómo funciona este sistema. Nosotros nos centraremos en:

  • create: Comando para crear una nueva migraci√≥n.
  • init: Inicializar√° nuestra app para poder usar migraciones.
  • migrate: Ejecuta las migraciones en nuestra base de datos.
  • rollback: Deshace una migraci√≥n.

En el archivo phinx.yml encontramos las rutas donde existir√°n las migraciones, con sus nombres y diferentes configuraciones en caso de que queramos poder tener la base de datos en diferentes entornos.

  • Al crear una tabla, su nombre deber√° tener el formato que tienen los nombres de clase (con las may√ļsculas iniciales) porque a la final lo que har√° Phinx ser√° formar una clase.

Aportes 26

Preguntas 1

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Para los que continuen el curso sin utilizar el entorno de **Homestad **y utilicen windows
Phinx trabaja como:
vendor\bin\phinx.bat
Brindara toda la configuracion igual que el video
ej:
vendor\bin\phinx create CreateUsersTable

Para que puedan a√Īadir guardar datos de jobs en la tabla sin que les mande error deben de a√Īadir como tercer par√°metro de addColumn un array con la opci√≥n de null como true en months y deleted_at, de la siguiente manera:

public function change()
    {
        $table = $this->table('jobs');
        $table->addColumn('title', 'string')
            ->addColumn('description', 'string')
            ->addColumn('months', 'integer', ['null' => true])
            ->addColumn('image', 'string')
            ->addColumn('created_at', 'datetime')
            ->addColumn('updated_at', 'datetime')
            ->addColumn('deleted_at', 'datetime', ['null' => true])
            ->create();
    }

vendor/bin/phinix init --format php


<?php
require_once './vendor/autoload.php';

$dotenv = Dotenv\Dotenv::create(__DIR__);
if(file_exists(__DIR__ . "./.env")) {
    $dotenv->load();
}


return
[
    'paths' => [
        'migrations' => '%%PHINX_CONFIG_DIR%%/db/migrations',
        'seeds' => '%%PHINX_CONFIG_DIR%%/db/seeds'
    ],
    'environments' => [
        'default_migration_table' => 'phinxlog',
        'default_database' => 'development',
        'production' => [
            'adapter' => getenv('DB_DRIVER'),
            'host' => getenv('DB_HOST'),
            'name' => getenv('DB_NAME'),
            'user' => getenv('DB_USER'),
            'pass' => getenv('DB_PASSWORD'),
            'port' => getenv('DB_PORT'),
            'charset' => 'utf8',
        ],
        'development' => [
            'adapter' => getenv('DB_DRIVER'),
            'host' => getenv('DB_HOST'),
            'name' => getenv('DB_NAME'),
            'user' => getenv('DB_USER'),
            'pass' => getenv('DB_PASSWORD'),
            'port' => getenv('DB_PORT'),
            'charset' => 'utf8',
        ],
        'testing' => [
            'adapter' => getenv('DB_DRIVER'),
            'host' => getenv('DB_HOST'),
            'name' => getenv('DB_NAME'),
            'user' => getenv('DB_USER'),
            'pass' => getenv('DB_PASSWORD'),
            'port' => getenv('DB_PORT'),
            'charset' => 'utf8',
        ]
    ],
    'version_order' => 'creation'
];

Para ejecutar los comandos migrate y rollback deben hacerlo en el SSH conectados a la maquina virtual de homestead, de lo contrario les dara error pues estarian ejecutando el comando en su sistema operativo principal y ahi no tienen la bd de homestead

vagrant up
vagrant ssh
vendor/bin/phinx migrate
vendor/bin/phinx rollback

Para ejecutar Phinx en windows (Para los que no estan usando Homestad) solo vayan al directorio que se encuentra el ejecutable phinx la cual es la que se mestra en el video (vendor\bin) y estando ahi solo ejecuten en la consola el comando phinx

crees necesario aprender cake y zend ?

Para la ejecución de:

vendor/bin/phinx create CreateJobsTable

recientemente, requiere la instalación de:

composer require symfony/yaml

Reto.

<?php

use Phinx\Migration\AbstractMigration;

class CreateUsersTable extends AbstractMigration
{
    public function change()
    {
        $table = $this->table('users');
        $table->addColumn('email', 'string', ['limit' => 60,'null' => true])
            ->addColumn('password', 'string', ['limit' => 200, 'null' => true])
            ->addColumn('userscol', 'string', ['limit' => 45,'null' => true])
            ->addColumn('created_at', 'datetime', ['null' => true])
            ->addColumn('updated_at', 'datetime', ['null' => true])
            ->create();
    }
}```

Para quienes este curso sea muy avanzado hay un lanzamiento de un nuevo curso de Fundamentos de PHP, disponible desde el 29 de septiembre Curso de Fundamentos de PHP

La migración de bases de datos la cual nos permite crear ciertos archivos y llevar un control sobre cómo va cambiando por si en un futuro cambiamos de máquina o entorno, podremos recrearla de manera sencilla.

Cuando cambiamos el proyecto y tuvimos una nueva base de datos, toda nuestra información se perdió y no era muy sencillo saber cuál era la estructura que debía tener. Esto puede pasar por cambiar de entorno, cambiar de máquina u otras razones y en estos casos es importante no tener que construir la base de datos desde 0 siempre y más si se tienen muchas tablas y condiciones.

Usaremos un proyecto llamado Phinx que fue utilizado en CakePHP el cual una vez instalado y usando el comando vendor/bin/phinx podremos ver la documentación y ayuda acerca de cómo funciona este sistema. Nosotros nos centraremos en:

create: Comando para crear una nueva migración.
init: Inicializar√° nuestra app para poder usar migraciones.
migrate: Ejecuta las migraciones en nuestra base de datos.
rollback: Deshace una migración.

En el archivo phinx.yml encontramos las rutas donde existir√°n las migraciones, con sus nombres y diferentes configuraciones en caso de que queramos poder tener la base de datos en diferentes entornos.

Al crear una tabla, su nombre deber√° tener el formato que tienen los nombres de clase (con las may√ļsculas iniciales) porque a la final lo que har√° Phinx ser√° formar una clase.

public function change()
    {
        $table = $this->table('users');
        $table->addColumn('user_name', 'string', ['limit' => '50'])
        ->addColumn('email', 'string', ['limit' => 50])
        ->addColumn('password', 'string')
        ->addColumn('created_at', 'datetime', ['null' => true])
        ->addColumn('updated_at', 'datetime', ['null' => true])
        ->create();
    }

Esto puede pasar por cambiar de entorno, cambiar de m√°quina u otras razones y en estos casos es importante no tener que construir la base de datos desde 0 siempre y m√°s si se tienen muchas tablas y condiciones

Aquí es donde entra en juego la migración de bases de datos la cual nos permite crear ciertos archivos y llevar un control sobre cómo va cambiando por si en un futuro cambiamos de máquina o entorno, podremos recrearla de manera sencilla

Usaremos un proyecto llamado Phinx que fue utilizado en CakePHP el cual una vez instalado y usando el comando vendor/bin/phinx podremos ver la documentación y ayuda acerca de cómo funciona este sistema

Nosotros nos centraremos en:

create: Comando para crear una nueva migración.
init: Inicializar√° nuestra app para poder usar migraciones.
migrate: Ejecuta las migraciones en nuestra base de datos.
rollback: Deshace una migración.

En el archivo phinx.yml encontramos las rutas donde existir√°n las migraciones, con sus nombres y diferentes configuraciones en caso de que queramos poder tener la base de datos en diferentes entornos

Al crear una tabla, su nombre deber√° tener el formato que tienen los nombres de clase (con las may√ļsculas iniciales) porque a la final lo que har√° Phinx ser√° formar una clase

Cuando cambiamos el proyecto y tuvimos una nueva base de datos, toda nuestra información se perdió y no era muy sencillo saber cuál era la estructura que debía tener

Rollback debe ser usado con responsabilidad. Creo que se debio aclarar.

Quizás deberían colocar este curso antes del curso de Laravel con PHP

Muy pr√°ctico esto de las migraciones.

se puede hacer migrate o rollback de una tabla en especifico??

Woooo, Est√° genial que se pueda usar un sistema de migraciones por aparte, estamos pr√°cticamente armando nuestro propio framework a base de otros miniframeworks xD

Y por cierto, usa migraciones, son MUY importantes para pasar proyectos a otras personas, en serio, usalos jaja