Keine Beschreibung

gabriel d12c47dfa0 Cambio information_schema vor 8 Jahren
Migrations d12c47dfa0 Cambio information_schema vor 8 Jahren
MigrationsBundle.php 154d35a5be Cambios menores vor 8 Jahren
README.md 4d0f3f7b06 README.md edited online with Bitbucket vor 8 Jahren
composer.json 13d4c5ab91 Inicio de las migraciones vor 8 Jahren

README.md

MigrationsBundle

Installation

composer.json:

"repositories": [
    {
        "type": "vcs",
        "url":  "ssh://git@bitbucket.org/ikflowdat/migrations.git"
    }
],
"require": {
    "ik/migrations-bundle": "dev-master"
},

app/AppKernel.php:

public function registerBundles()
{
    $bundles = [
        new MigrationsBundle\MigrationsBundle()
    ];
    .
    .
}

Class

  • MigrationsBundle\MigrationsBase: Clase de la cual se debe extender para poder hacer migraciones interpretando un yaml. Esta clase proporciona los siguientes métodos que se ejecutan en el siguiente orden: Php 1- preUp: se utiliza para validaciones y sentencias DML. 2- up: se utiliza principalmente para sentencias DDL. 3- postUp: se utiliza para validaciones y sentencias DML. 4- preDown: se utiliza para validaciones y sentencias DML. 5- down: se utiliza principalmente para sentencias DDL. 6- postDown: se utiliza para validaciones y sentencias DML.

Ademas se pueden utilizar las siguientes funciones:

	* deleteMigrationsVersion: recibe como parámetro el objeto de 
ejecución ($this). 
	        Se debe incluir en la función "preUp".
	        Borra la versión de la tabla de migraciones para que no tire 
error. 
	        Esto se utiliza en caso de que se deba correr varias veces 
la misma migración.
	* setShowParameters: recibe como parámetro un TRUE/FALSE.
	        Se utiliza para mostrar los parámetros de cada una de las 
sentencias sql.
    * showResult: no recibe parámetros.
            Se encarga de mostrar como se ejecuto cada uno de las sentencias 
sql.
    * executeYaml: recibe como parámetro el nombre del archivo a incorporar. 
            Se toma como base el directorio app/DoctrineMigrations/ 

Execution

Una versión

$ bin/console doctrine:migrations:execute <numberOfMigrations>

Todas las versiones

$ bin/console doctrine:migrations:migrate

Example YAML

Palabras claves de importación: son palabras que importan los datos desde otros archivos que pueden estar en otros directorios. Siempre se toma como base app/DoctrineMigrations.

   import: importa el valor de un campo de un registro.
   importKey: importa un registro completo. Este archivo puede contener la 
palabra clave "import".

Ejemplo completo datosAIncorporar.yml

insert:
  groups: # nombre de la tabla 
    - id: 1 # registro 1
      name: Admin  1
      roles: rol 1
      ignore: true
      orupdate: true
    - id: 2 # registro 2
      name: {import: "insertSoloName.yml"}
      replace: 1
      roles: rol 2
    - {importkey: "insertCompleto.yml"} # registro 3
    - {importkey: "insertCompletoAnidado.yml"} # registro 4
update: # nombre de la tabla
  groups:
    - name: "Admin update 1" # registro 1
      where: id = 1
    - where: id = 2
      name: {import: "updateSoloName.yml"} # registro 2
    - {importkey: "updateCompleto.yml"} # registro 3
    - {importkey: "updateCompletoAnidado.yml"} # registro 4
delete: # nombre de la tabla
  groups:
    - where: id = 1 # registro 1
    - where: {import: "deleteSoloWhere.yml"} # registro 2
    - {importkey: "deleteCompleto.yml"} # registro 3
    - {importkey: "deleteCompletoAnidado.yml"} # registro 4

Explicación de cada uno de las sentencias

INSERT: El "replace" sobrescribe al "ignore" y el "orupdate" sobrescribe al "replace".

palabras claves:
    orupdate: crea un "insert ... or update ...". Si el registro no existe lo 
inserta, en caso contrario hace un update de  los datos.
    replace: crea un "replace into ...".
    ignore: crea un "insert ignore into ...".

Archivo base de incorporación: datosAIncorporar.yml

insert:
  groups: # nombre de la tabla
    - id: 1 # registro 1
      name: Admin  1
      roles: rol 1
      ignore: true
      orupdate: true
    - id: 2 # registro 2
      name: {import: "insertSoloName.yml"} 
      replace: 1
      roles: rol 2
    - {importkey: "insertCompleto.yml"} # registro 3 
    - {importkey: "insertCompletoAnidado.yml"} # registro 4

Archivo que contiene solo el valor del campo name: insertSoloName.yml

Admin 2

Archivo que contiene la estructura de un insert: insertCompleto.yml

id: 3
name: "Admin 3"
roles: rol 3

Archivo que contiene la estructura de un insert y se anida en 1 profundidad: insertCompletoAnidado.yml

id: 4
name: {import: "insertCompletoAnidadoSoloName.yml"}
roles: rol 4
ignore: 1

UPDATE: tiene la particularidad de que el where se debe escribir completo. Archivo base de incorporación: datosAIncorporar.yml

update:
  groups: # nombre de la tabla
    - name: "Admin update 1" # registro 1
      where: id = 1
    - where: id = 2    # registro 2
      name: {import: "updateSoloName.yml"}
    - {importkey: "updateCompleto.yml"} # registro 3
    - {importkey: "updateCompletoAnidado.yml"} # registro 4

Archivo que contiene solo el valor del campo name: updateSoloName.yml

Admin update 222222

Archivo que contiene la estructura de un update: updateCompleto.yml

where: id = 3
name: "Admin update 3"

Archivo que contiene la estructura de un udpate y se anida en 1 profundidad: updateCompletoAnidado.yml

where: id = 4
name: {import: "updateCompletoAnidadoSoloName.yml"}

DELETE: tiene la particularidad de que el where se debe escribir completo. Archivo base de incorporación: datosAIncorporar.yml

delete:
  groups: # nombre de la tabla
    - where: id = 1 # registro 1
    - where: {import: "deleteSoloWhere.yml"} # registro 2
    - {importkey: "deleteCompleto.yml"} # registro 3
    - {importkey: "deleteCompletoAnidado.yml"} # registro 4

Archivo que contiene solo el valor del campo name: deleteSoloWhere.yml

id = 2

Archivo que contiene la estructura de un delete: deleteCompleto.yml

where: id = 3

Archivo que contiene la estructura de un delete y se anida en 1 profundidad: deleteCompletoAnidado.yml

where: {import: "deleteCompletoAnidadoWhere.yml"}