Skip to main content

Crear BD MySQL relacional con migraciones laravel4.2

INFO

Tutorial Laravel4.2, Crear una Base de datos relacional en MySQL utilizando migraciones de laravel, en este tutorial veremos como de una forma sencilla a crear una base de datos relacional, este ejemplo se aplica al motor de datos InnoDB de mysql, el código de las migraciones estan aquí debajo.

CODIGO

Migración para sucursales:

2014_07_20_192908_create_sucursales_table.php

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateSucursalesTable extends Migration {

  /**
   * Run the migrations.
   *
   * @return void
   */
  public function up()
  {
    Schema::create('sucursales', function(Blueprint $table)
    {
      $table->increments('id');
      $table->string('nombre',20);
      $table->integer('telefono');
      $table->string('direccion',40);
      $table->string('email',40)->nullable();
    });
  }

  /**
   * Reverse the migrations.
   *
   * @return void
   */
  public function down()
  {
    Schema::drop('sucursales');
  }

}

Migración para usuarios:

2014_07_20_192948_create_usuarios_table.php

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsuariosTable extends Migration {

  /**
   * Run the migrations.
   *
   * @return void
   */
  public function up()
  {
    Schema::create('usuarios', function(Blueprint $table)
    {
      $table->increments('id');
      $table->string('usuario',20);
      $table->string('nombre',20);
      $table->string('apellido',20);
      $table->string('apellido2',20)->nullable();
      $table->integer('telefono');
      //campo que contendra la llave foranea
      $table->integer('sucursal_id')->unsigned();
      //stablecemos la llave foranea
      $table->foreign('sucursal_id')->references('id')
      ->on('sucursales')->onDelete('cascade')
      ->onUpdate('cascade');
      $table->string('remember_token',100);
      $table->string('password');
      $table->timestamps();
    });
  }

  /**
   * Reverse the migrations.
   *
   * @return void
   */
  public function down()
  {
    Schema::drop('usuarios');
  }

}

Migración para ventas:

2014_07_20_193032_create_ventas_table.php

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateVentasTable extends Migration {

  /**
   * Run the migrations.
   *
   * @return void
   */
  public function up()
  {
    Schema::create('ventas', function(Blueprint $table)
    {
      $table->increments('id');
      $table->date('fecha');
      $table->float('total');
      //campo que contendra la llave foranea
      $table->integer('usuario_id')->unsigned();
      //establecemos la llave foranea
      $table->foreign('usuario_id')->references('id')
      ->on('usuarios')->onDelete('cascade');

    });
  }

  /**
   * Reverse the migrations.
   *
   * @return void
   */
  public function down()
  {
    Schema::drop('ventas');
  }

}

Migración para permisos:

2014_07_20_193102_create_permisos_table.php

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreatePermisosTable extends Migration {

  /**
   * Run the migrations.
   *
   * @return void
   */
  public function up()
  {
    Schema::create('permisos', function(Blueprint $table)
    {
      $table->increments('id');
      $table->boolean('sistema');
      $table->char('nivel', 2);
      //campo que contendra la llave foranea
      $table->integer('usuario_id')->unsigned();
      //establecemos la llave foranea
      $table->foreign('usuario_id')->refences('id')
      ->on('usuarios')->onDelete('cascade');
  
    });
  }

  /**
   * Reverse the migrations.
   *
   * @return void
   */
  public function down()
  {
    Schema::drop('permisos');
  }

}

 

 

5 comentarios en “Crear BD MySQL relacional con migraciones laravel4.2”

  1. hola execelente tutorial era lo que me faltaba solo una consulta como realizo una actualizacion de mis tablas por si me olvide dealgun campo con migraciones claro sin afectr q ya tenga datos isnertados en los demas campos.

    gracias
    atte jose luis aficionado a la programacion

  2. hola
    tengo el siguiente problema
    tengo un sistema q estoy relizando y bueno toda la base de datos lo realice con mysql workbench bueno
    en la tabla users agregue lo siguiente

    username
    password
    ‘remember_token

    en el campo password tambien ingrese los datos correctos
    $datos=new User;
    $datos->usuario=»winer»;
    $datos->password=Hash::make(‘123’);
    $datos->save();

    todo hasta ahi bien
    pero no me loguea

    y de prueba cree otra base de datos con migraciones esa si me logue cual cree q pued ser la causa de mi problema
    agradeceria q me ayudara gracias

    1. puede ser por muchos factores por ejemplo: el no uso de todos los campos incluyendo created_at updated_at, mescla de ingles español, una relacion de tablas mal definida, o algo que laravel no entiende, etc. yo no tube ese problema ami me anda bien tanto con workbench como con migraciones o con phpmyadmin manualmente. pero es bueno experimentar de esa forma te das cuenta cual funciona mejor

  3. las misma tabla y los mismos campos uno creado con mysql worhbench y el otro con migraciones el de migraciones si funciona y el creado con workbench no bueno estaba acosutmbra a usar workbench bueno ni modo a aprender a usar las migraciones gracias de todas formas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.