Diferencia entre revisiones de «Usuario:ManuelRomero/Laravel/migraciones»
De WikiEducator
(→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
- 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