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

De WikiEducator
Saltar a: navegación, buscar
(Migraciones)
Línea 56: Línea 56:
 
*timestamps, básicamente lo que hace ese método es crear dos campos llamados '''''created_at''''' y otro '''''updated_at'''''.
 
*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. No sinformarán de cuando fue creado o modificado cada uno de los registros de nuestra tabla.
 
*Estos campos son de tipo TIMESTAMP. No sinformarán de cuando fue creado o modificado cada uno de los registros de nuestra tabla.
 +
===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/seeds'''''y creamos un fichero  '''''PoblarUsuariosSeeder.php'''''
 +
*Esta clase debe de extender de '''''Seeder'''''
 +
<source lang=php>
 +
class PoblarUsuariosSeeders extends Seeder {
 +
    //put your code here
 +
    public function run()
 +
    {
 +
        $usuarios = [
 +
            ['nombre' => 'maria', 'password' => Hash::make('111'), 'email' => 'maria@email.com'],
 +
            ['nombre' => 'lucia', 'password' => Hash::make('222'), 'email' => 'lucia@email.com'],
 +
            ['nombre' => 'paula', 'password' => Hash::make('333'), 'email' => 'nieves@email.com']
 +
        ];
 +
 +
        DB::table('usuarios')->insert($ususarios);
 +
    }
 +
}
 +
</source>
 +
*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
 +
<source lang=php>
 +
  $this->call('PoblarUsuariosSeeders');
 +
</source>
 +
*Quedándonos el código de la clase
 +
<source lang=php>
 +
 +
class DatabaseSeeder extends Seeder {
 +
/**
 +
* Run the database seeds.
 +
*
 +
* @return void
 +
*/
 +
public function run()
 +
{
 +
Eloquent::unguard();
 +
                $this->call('PoblarUsuariosSeeders');
 +
// $this->call('UserTableSeeder');
 +
}
 +
}
 +
</source>
 +
*Ahora sólo nos queda ejecutar esta acción, esto lo haremos en la línea de comandos de artisan
 +
php artisan db:seed

Revisión de 19:47 9 feb 2015



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
 php artisan migrate:make usuarios
  • Para elecutar una migracion
php artisan migrate:install
  • Ahora si vamos al phpmyadmin observamos que tenemos creada la tabla migrations con dos campos

PhpmyadminMigrations.png

  • 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 meter los campos que nos pudieran interesar
<?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');
    }
}
  • 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. No sinformarán de cuando fue creado o modificado cada uno de los registros de nuestra tabla.

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
  • Esta clase debe de extender de Seeder
class PoblarUsuariosSeeders extends Seeder {
    //put your code here
     public function run()
    {
        $usuarios = [
            ['nombre' => 'maria', 'password' => Hash::make('111'), 'email' => 'maria@email.com'],
            ['nombre' => 'lucia', 'password' => Hash::make('222'), 'email' => 'lucia@email.com'],
            ['nombre' => 'paula', 'password' => Hash::make('333'), 'email' => 'nieves@email.com']
        ];
 
        DB::table('usuarios')->insert($ususarios);
    }
}
  • 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