Diferencia entre revisiones de «Usuario:ManuelRomero/Laravel/migraciones»

De WikiEducator
Saltar a: navegación, buscar
(Modificando la migración)
Línea 88: Línea 88:
 
===La clase Schema (facade) ===
 
===La clase Schema (facade) ===
 
*Esta clase proporcina métodos para toda el LDD del gestor de bases de datos
 
*Esta clase proporcina métodos para toda el LDD del gestor de bases de datos
  ttps://laravel.com/docs/5.6/migrations#creating-tables
+
  https://laravel.com/docs/5.6/migrations#creating-tables
  
 
;Crear las tablas con campos especificados (método '''''create''''')
 
;Crear las tablas con campos especificados (método '''''create''''')

Revisión de 22:40 26 feb 2018



Migraciones

  • Es una forma de crear facilmente una base de datos para trabajar con laravel
  • Primero hemos de configurar la base de datos con la que queremos trabajar.
  • Hay que tener en cuenta que este sistema es como crear las tablas/campos con phpmyadmin u otro gestor
  • Tiene una serie de ventajas, una vez que has creado las migraciones, otros las pueden ejecutar para tener exactamente tu estructura de bases de datos, y también puedes tener un control de versiones sobre tu base de datos
  • Para crear una migración especificamos el nombre
 php artisan make:migration usuarios 
  • Podemos especificar el nombre de la tabla con --table o --create
 php artisan make:migration usuarios --table=usuarios
 o
 php artisan make:migration usuarios --create=usuarios
  • Para elecutar una migración
php artisan migrate:install
  • Con esto tendríamos creada un migración.
  • Ahora si vamos al phpmyadmin observamos que tenemos creada la tabla migrations con dos campos

PhpmyadminMigrations.png

  • Ahora tendremos que indicar la/s tabla/s que queremos crear
  • Para añadir los campos de la tabla tendremos que ir a la carpeta database/migrations/FECHA_CREACION_usuarios.php y lo abrimos
  • En el vemos que tenemos dos métodos uno up y otro down
  • Ahora tendríamos que ir a la clase tabla_producto y en el método up e indicar la estructura de tabla a crear.
<?php
 
use Illuminate\Database\Migrations\Migration;
 
class CrearTablaUsuario extends Migration {
 
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('usuarios', function($tabla) 
        {
            $tabla->increments('id');
            $tabla->string('nombre', 50);
            $tabla->string('email', 100)->unique();
            $tabla->string('password', 200);
            $tabla->timestamps();
        });
    }
 
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('usuarios');
    }
}

Modificando la migración

  • Podemos volver a alterar la estructura de la base de datos y volver a ejectuar la migración.


Icon activity.jpg
Modificando migraciones
Deshace la última migracion
php artisan migrate:roollback 
Deshace las 3 últimas migracion
php artisan migrate:roollback --step=3
Deshace todo (ejecuta los métodos down

php artisan migrate:reset

Deshace todo y vuelve a ejectuar las migraciones
php artisan migrate:refresh
Deshace todo y vuelve a ejectuar las migraciones y ejecuta la población de datos
php artisan migrate:refresh --seek
Borra todas las tablas de la base de datos y ejecuta las migraciones
php artisan migrate:fresh




  • Vemos como se crean los campos. Los tipos string, laravel los convierte a Varchar2.
  • id es de tipo autoincremento
  • timestamps, básicamente lo que hace ese método es crear dos campos llamados created_at y otro updated_at.
  • Estos campos son de tipo TIMESTAMP. Nos informarán de cuando fue creado o modificado cada uno de los registros de nuestra tabla.

Tipos de datos

La clase Schema (facade)

  • Esta clase proporcina métodos para toda el LDD del gestor de bases de datos
https://laravel.com/docs/5.6/migrations#creating-tables
Crear las tablas con campos especificados (método create)
  Schema::create('usuarios', function($tabla) 
        {
         $tabla->increments('id'); //Campo autoincrementto
         $tabla->string('nombre', 50); //String
         $tabla->string('email', 100)->unique();
         $tabla->string('password', 200);
         $tabla->string('direccion', 200);
         $tabla->timestamps(); //Crea los campos update_up y current_up de tipo '''''timestamp'''''
        });
  • Para ver los métodos para especificar los tipos campos de la base de datos consultar a la web de referencia.
Borrar la tabla, método drop
  Schema::drop('nombreTabla');
  Schema::dropIfExists('users');
Cambiar el nombre de una tabla, método rename
  Schema::rename('nombreAntiguo','nombreNuevo);
Cambiar el nombre de un campo de una tabla, método rename
  Schema::rename('nombreAntiguo','nombreNuevo);


Añadir un campo en la tabla método table
Schema::table('nombreTabla', function($table)
{
    $table->string('email');
});
Añadir restricciones
  • 1.- clave primaria
$table->primary('id'); //Clave principal id
$table->primary(array('first', 'last'));//Clave principal compuesta
  • 1.- clave candidata o valor único
$table->unique('email');
  • 1.- índice
  $table->index('cod¡go'); 	Agregar un índice básico

=

Poblando una base de datos desde migration

  • Laravel provee una sencilla manera de poblar una base de datos
  • Esta acción se conoce como seeding
  • En una forma de gestionar todo desde el framework, no obstante igualmente se puede hacer directamente desde el phpmyadmin.
  • Vamos a utilizarlo
  • Primero vamos a la carpeta app/database/seedsy creamos un fichero PoblarUsuariosSeeder.php
  • Tambien lo podemos hacer con artisan
php artisan make:seeder PoblarAlumnos
  • Esta clase debe de extender de Seeder
class PoblarUsuariosSeeders extends Seeder {
    //put your code here
     public function run()
    { //Usando el modelo creamos un nuevo registro. Tambien se puede hacer con el método save
       Usuario::create(array(
            'usuario'  => 'manolo',
            'email'     => 'admin@admin.com',
            'password' => Hash::make('manolo') // Hash::make() nos va generar una cadena con nuestra contraseña encriptada
    }
}
  • Ahora nos queda ejecutarla; Para ello vamos a modificar la clase DataBaseSeeders.php que tenemos en /app/database/seeds.
  • Ahí lo que hacemos es añadir una linea para que se llame a la clase que previamente hemos creado
  $this->call('PoblarUsuariosSeeders');
  • Quedándonos el código de la clase
class DatabaseSeeder extends Seeder {
	/**
	 * Run the database seeds.
	 *
	 * @return void
	 */
	public function run()
	{
		Eloquent::unguard();
                $this->call('PoblarUsuariosSeeders');
		// $this->call('UserTableSeeder');
	}
}
  • Ahora sólo nos queda ejecutar esta acción, esto lo haremos en la línea de comandos de artisan
php artisan db:seed
  • Esta acción también la podemos hacer al ejecutar la migración
php artisan migrate:refresh --seed
  • Vamos a probar un componente que nos va a permitir realizar una población masiva de datos
https://github.com/fzaninotto/Faker
https://packagist.org/packages/fzaninotto/faker
  • Para instalar escribmos en el composer.json