LARAVEL-MIGRACIONES

Las migraciones son como el control de versión para tu base de datos, permiten que tu equipo modifique y comparta el esquema de base de datos de la aplicación.

La clase facade Schema de Laravel proporciona soporte de base de datos orientado a la programación orientada a objetos para la creación y manipulación de tablas a través de todos los sistemas de bases de datos soportados por Laravel.
 

Crear una base de datos

php artisan migrate

ejecutamos la migracion --corremos la migracion

php artisan make:migration cursos

php artisan make:migration create_curso_table

creamos una migracion

php artisan migrate:rollback

Revertir los cambios de la ultima migracion a nivel de bloque

php artisan migrate:fresh

elimina todas las tablas y despues ejecuta el medto up

php artisan migrate:fresh

ejecuta el metodo dow y despues el up

php artisan migrate add_avatar_to_nombredelatabla_table

php artisan make:migration add_avatar_to_nombredelatabla_table

php artisan list

agregar un campo modificar una tabla  

$table->string(‘avatar’)->nullable();

$table->string(‘avatar’)->nullable()->after(‘email’) ;


Las migraciones están dentro de la carpeta database/migrations


Una migración es el esquema de la tabla que se creara en la base de datos.

Generando migraciones

Para crear una migración, usa el 
comando Artisan

php artisan make:migration  nombre

Creando el modelo y la migración

php artisan make:model cliente --m

creando migracion, modelo y el conrolador con :::


php artisan make:model Receta -mcr



 Ejecutar la migracion creada

para ejecutar la migracion creada lo hacemos con el comando::


php artisan migrate




Opciones con las migraciones

El asistente de comandos artisan tiene una serie de instrucciones para trabajar con las migraciones. Como siempre, podemos encontrar la lista de comandos disponibles en artisan con "php artisan", php artisan help make:migration y php artisan list.

migrate:reset

Realiza una marcha atrás de todas las migraciones en el sistema, volviendo el schema de la base de datos al estado inicial.

migrate:refresh

Vuelve atrás el sistema de migraciones y las vuelve a ejecutar todas.

migrate:rollback


Vuelve hacia atrás la última migración realizada. Una migración puede incluir varias tablas que fueron migradas de una sola vez en el paso anterior.

migrate:status


Te informa de las migraciones presentes en el sistema y si están ejecutadas o no.Puedes probar estos comandos con total garantía que no vas a romper nada, ejecutando las migraciones y volviendo hacia atrás, consultando el "status" en cada paso. Eso te ayudará a entender mejor las mecánicas de las migraciones y a empezar a apreciar la potencia que hay detrás de este sistema.

Como código para definir la tabla, ayudados por el objeto $table, de la clase Blueprint, realizaremos la declaración de cada uno de los campos, usando métodos como estos:




increments() genera un campo auto-increment.

string() genera un campo de tipo cadena (VARCHAR).

text() genera un campo largo de cadena (TEXT).

integer() genera un campo de tipo entero.

boolean() genera un campo boleano.

timestamp()
genera un campo timestamp.

timestamps(), observa que está en plural, genera las columnas created_at y updated_at para que Laravel lleve el control de estos campos automáticamente.



Modificadores de columna

Además de los tipos de columna enumerados anteriormente, hay varios otros "modificadores" de columna que puede usar al agregar la columna. Por ejemplo, para hacer que la columna sea "anulable", puede usar el nullablemétodo:

Schema::table('users', function ($table) {

$table->string('email')->nullable();

});

A continuación se muestra una lista de todos los modificadores de columna disponibles. Esta lista no incluye los modificadores de índice :




modificador Descripción

->first():: Coloque la columna "primero" en la tabla (solo MySQL)

->after('column') Coloque la columna "después" de otra columna (solo MySQL)

->nullable() Permitir que se inserten valores NULL en la columna

->default($value) Especifique un valor "predeterminado" para la columna

->unsigned() Establecer integercolumnas paraUNSIGNED

Laravel incluye un sistema de migraciones de base de datos con el cual podemos definir todas las tablas de nuestra aplicación desde PHP, utilizando una interfaz orientada a objetos. Este sistema nos da la ventaja de que podemos guardar las diferentes «versiones» de nuestra base de datos como código dentro del sistema de control de versiones (por ejemplo git), además nos permite generar tablas para diferentes bases de datos (MySQL, PostgreSQL, SQLite, y SQL Server) usando el mismo código PHP.

También podemos generar una nueva migración desde la consola con el comando php artisan make:migration seguido del nombre de la migración, por ejemplo:




#

php artisan make:migration create_notes_table




En Laravel, se dice que las migraciones son un control de versiones de nuestra base de datos, pero en realidad son más que eso. Este nos permite crear tablas, establecer relaciones, modificarlas y por supuesto eliminarlas, y todo esto mediante la consola de comandos.




Veamos un ejempo básico de introducción, para esto obviamente debemos tener descargado el framework previamente y corriendo en nuestro servidor local o de pruebas.
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
}


Aquí se llama al método create dentro del «Facade» Schema. Recuerda que los Facades en Laravel nos permiten interactuar con componentes
registrados en el framework a través de una interfaz estática;
pero realmente no hay un método create dentro de esta clase Schema.


Este método create acepta 2 argumentos, el primero es el nombre de la tabla que será creada,
el segundo es una función anónima o Closure:


Esta función anónima va a recibir un objeto de la clase Illuminate\Database\Schema\Blueprint y es este último objeto el que contiene los métodos para definir los campos de la tabla, por ejemplo: $table->bigIncrements('id'); define una columna de tipo BIGINT UNSIGNED, es decir, entero grande sin números negativos. $table->timestamps(); define 2 columnas de tipo TIMESTAMP con los nombres created_at y updated_at, estas columnas son usadas por Eloquent, el ORM de Laravel que veremos más adelante. Vamos a agregar 2 columnas más en el medio: $table->string('title'); define una columna de tipo VARCHAR con el nombre title $table->mediumText('content'); define una columna de tipo MEDIUMTEXT con el nombre content


Método Up: corre las migraciones/cambios pendientes. Método Down: revierte la migración realizada por el método up. Podemos observar que Laravel nos ha creado una clase, con dos métodos para gestionar muestra tabla fácilmente.


Bibliografia::


https://laravel.com/docs/5.1/migrations#writing-migrations

Comentarios

Entradas populares de este blog

Filtrando por fecha

10 videojuegos gratis para aprender JavaScript en línea

reloj obs---datetime.lua