|
5 gadi atpakaļ | |
---|---|---|
.gitlab | 6 gadi atpakaļ | |
Command | 7 gadi atpakaļ | |
Migrations | 7 gadi atpakaļ | |
keys | 7 gadi atpakaļ | |
.drone.yml | 7 gadi atpakaļ | |
.gitlab-ci.yml | 5 gadi atpakaļ | |
MigrationsBundle.php | 8 gadi atpakaļ | |
README.md | 7 gadi atpakaļ | |
composer.json | 7 gadi atpakaļ |
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()
];
.
.
}
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: 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. Se debe incluir en la función "preUp".
Recibe como parámetro el objeto de ejecución ($this).
* executeSQL: Ejecuta un sql en al base de datos.
Recibe como parámetros el sql, el tipo de sentencia (INSERT/
UPDATE/DELETE) y un array con los valores a reemplazar en el sql.
* executeYaml: Ingresa los valores desde un archivo yaml. Se toma como base
el directorio app/DoctrineMigrations/
Recibe como parámetro el nombre del archivo a incorporar.
* existFieldInTable: Verifica si existe un campo dentro de una tabla.
Recibe como parámetro el nombre de la tabla y el nombre del campo.
* existFieldType: Verifica si existe un campo con un cierto tipo de dato dentro de una tabla.
Recibe como parámetro el nombre de la tabla, el nombre del campo y el tipo de dato.
* existTable: Verifica si existe una tabla.
Recibe como parámetro el nombre de la tabla.
* existValueInTable: Verifica si existe un valor en la tabla.
Recibe como parámetro el nombre de la tabla, el nombre del campo y el valor a buscar.
* getAutoIncrementValue: Retorna el valor del auto_increment de una tabla.
Recibe como parámetro el nombre de la tabla.
* getDataBaseName: Retorna el nombre de la base a la cual estoy conectado.
* getMigrationNumber: Función que obtiene el número de migración que estoy ejecutantdo.
Recibe como parámetro el objeto de ejecución ($this).
* setAutoIncrementValue: Setea el valor del auto_increment de una tabla.
Recibe como parámetro el nombre de la tabla y valor a setear.
* setShowParameters: Se utiliza para mostrar los parámetros de cada una de las
sentencias sql.
Recibe como parámetro un TRUE/FALSE.
* showResult: Se encarga de mostrar como se ejecuto cada uno de las sentencias sql.
No recibe parámetros.
* verifyMigrationsVersion: Verifica si la migración ya se incorporó.
Recibe como parámetro el objeto de ejecución ($this).
Una versión
$ bin/console doctrine:migrations:execute <numberOfMigrations>
Todas las versiones
$ bin/console doctrine:migrations:migrate
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
- id: 2 # registro 2
name: {import: "insertSoloName.yml"}
replace: 1
roles: rol 2
- {importkey: "insertCompleto.yml"} # registro 3
- {importkey: "insertCompletoAnidado.yml"} # registro 4
replace:
groups: # nombre de la tabla
- id: 1 # registro 1
name: Admin 1
roles: rol 1
- id: 2 # registro 2
name: {import: "insertSoloName.yml"}
replace: 1
roles: rol 2
- {importkey: "insertCompleto.yml"} # registro 3
- {importkey: "insertCompletoAnidado.yml"} # registro 4
insertignore:
groups: # nombre de la tabla
- id: 1 # registro 1
name: Admin 1
roles: rol 1
- id: 2 # registro 2
name: {import: "insertSoloName.yml"}
replace: 1
roles: rol 2
- {importkey: "insertCompleto.yml"} # registro 3
- {importkey: "insertCompletoAnidado.yml"} # registro 4
insertorupdate:
groups: # nombre de la tabla
- id: 1 # registro 1
name: Admin 1
roles: rol 1
- 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
Archivo base de incorporación: datosAIncorporar.yml
insert:
groups: # nombre de la tabla
- id: 1 # registro 1
name: Admin 1
roles: rol 1
- 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"}
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"}