|
vor 8 Jahren | |
---|---|---|
Migrations | vor 8 Jahren | |
MigrationsBundle.php | vor 8 Jahren | |
README.md | vor 8 Jahren | |
composer.json | vor 8 Jahren |
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: 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/
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
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"}