Skip to main content

4 MySQL DB Eloquent Relación muchos a muchos laravel4

INFO

Tutorial final de base de datos laravel4, en este último tutorial de base de datos veremos como crear la relación de muchos a muchos, teniendo como ejemplo; estudiantes y cursos, utilizando MysqlWorkbench crearemos de forma facil nuestra base de datos relacional.

Realizaremos operaciones como insertar, recuperar y eliminar registros, siendo que la actualización se realiza de forma individual a cada tabla visto en primeros tutoriales, el código fuente y la base de datos estaran disponibles debajo de este post.

CODIGO

Modelos: Curso.php

<?php
class Curso extends Eloquent
{
  public $timestamps = false;
    //un curso puede pertenecer a muchos usuarios, muchos a muchos con users
    public function users()
    {
        return $this->belongsToMany("User");
    }    
}

User.php
public $timestamps = false;
  //relación muchos a muchos entre usuarios y cursos
    public function cursos()
    {
        return $this->belongsToMany("Curso")->withPivot('horario');
    }

Rutas: routes.php
Route::get('insertar', function()
{
  
  $user = new User;

  $user->nombre = "luis";
  $user->apellido = "perez";
  $user->save();

  $curso = new Curso;
  $curso->curso = "html";
  $curso->save();

});

Route::get('registrar', function()
{
  $user = User::find(5);
  $curso = Curso::find(1);
  $user->cursos()->save($curso);

});

Route::get('ver_cursos', function(){
 
    $user = User::find(1);
    if(count($user->cursos) == 0){
        echo 'El estudiante '.$user->nombre.' 
    no esta inscrito a ningún curso';
    }else{
      echo 'Estudiante: <b>'.$user->nombre.'</b><h3>
    Cursos inscriptos: </h3><ul>';
        foreach($user->cursos as $curso){

            echo '<li>'.$curso->curso.'</li>';
        }
        echo '</ul>';
    }
});

Route::get('registrar_otro', function()
{
  //buscamos al usuario
  $user = User::find(1);
  //le asignamos un curso con el id del curso
  $user->cursos()->attach(4);

});

Route::get('eliminar_curso', function()
{
  $user = User::find(5);
  $user->cursos()->detach(2);

});

Route::get('pivote', function()
{

$user = User::find(5);

foreach ($user->cursos as $hora)
{
    echo $hora->pivot->horario;
}

});

Base de datos MySQLWorkBench v6:

http://www.mediafire.com/download/j336v9sz48r9pdp/modelo_muchos_a_muchos.rar

Descarga el proyecto autor (Dan Trenz)

laravel-model-demo

Una respuesta a “4 MySQL DB Eloquent Relación muchos a muchos laravel4”

  1. Ante todo un cordial saludo desde venezuela, agradeciendo este enorme aporte que has hecho, me ha servido para iniciar en este mundo de los framework, espero saber muy pronto sobre nuevos videos de laravel deseando los mejores de los éxitos.

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.