Bueno, entrando un poco más en nuestro primer CRUD, podemos continuar con los modelos, donde tratamos la parte de datos que van a interactuar con nuestra aplicación.
Por empezar ya tenemos creado el modelo User, que éste viene por defecto en la instalación de Laravel, así que vamos a crear los otros dos, Tarea y Estado.
Importante: a la hora de crear tablas deberíamos crearlas en plural, sin embargo los modelos deberían escribirse en singular, y con la primer letra en mayúscula:
User –> users
Tarea –> tareas
Estado –> estados
(Modelo –> Tabla)
Ojo con esto, porque al escribir las tablas en plural, a diferencia de los modelos que son en singular, no significa la palabra como tal en castellano/español. Por ejemplo si tuviésemos que trabajar con canciones en nuestra aplicación, el modelo sería «Cancion», pero la tabla no sería «canciones» sino «cancions»:
Cancion –> canciones
Cancion –> cancions
Simplemente agregamos una «s» al final. Y tampoco hay que escribir con tildes, aunque eso debería estar más que claro:
Canción –> canciones
Aunque si no querés seguir esta regla, y querés ponerle cualquier otro nombre a la tabla, dentro del modelo (ahora vemos como crearlos), podés agregar un atributo donde indicar el nombre de la tabla:
protected $table = 'nombre_de_la_tabla';
Modelos
Bien, vamos a ir a la consola, y vamos a crear los modelos que nos faltan:
php artisan make:model Estado
Y luego:
php artisan make:model Tarea
Si ahora vamos dentro de la carpeta «app», podemos ver que ya están creados los nuevos modelos. Así que vamos a editar ambos, y también el que ya estaba desde el principio, que es User.
Relaciones
Podemos ver los distintos tipos de relaciones dentro de la documentación de Laravel:
https://laravel.com/docs/5.0/eloquent#relationships
Pero, de momento vamos a crear las relaciones de nuestra aplicación que en realidad ambas son de 1 a n, tanto para las tareas y los usuarios, como para las tareas y los estados.
Dentro de User vamos a agregar el siguiente método:
public function tareas() { return $this->hasMany('App\Tarea'); }
Y dentro de estados lo mismo:
public function tareas() { return $this->hasMany('App\Tarea'); }
Esto va a indicarle a ambas entidades que pueden estar ligadas a varias tareas. Por ejemplo si queremos recuperar un usuario en particular haríamos esto:
$usuario = Usuario::find(1);
Aquí recuperamos el usuario con el id 1.
Y si también queremos recuperar las tareas del mismo:
$usuario = Usuario::find(1); $tareas = $usuario->tareas;
Tan sencillo como eso.
Finalmente dentro de nuestro modelo Tarea vamos a hacer la otra parte, agregamos a los métodos que indiquen a qué entidad pertenecen, a qué usuario y en qué estado están:
public function usuario() { return $this->belongsTo('App\User'); }
Y luego:
public function estado() { return $this->belongsTo('App\Estado'); }
Esto nos va a permitir que cuando recuperemos una tarea, también podremos ver su estado:
$tarea = Tarea::find(5); $estado = $tarea->estado;
¿Fácil? Claro que sí.
Anterior: Laravel 5, parte 3: Usuarios
Siguiente: Laravel 5, parte 5: Controladores y Rutas