Sie sind auf Seite 1von 36

MANUAL DE RELACIONES (UNO A MUCHOS – MUCHOS A MUCHOS)

COMANDOS QUE USAREMOS EN EL TRANSCURSO DEL MANUAL

- php artisan db:seed: Para ejecutar los seeders

- php artisan db:seed –class = NameTableSeeder: En caso de que tengas múltiples seeders y
solo necesitas ejecutar uno solo.

- php artisan tinker: Con este comando entramos a la consola de comandos de laravel que nos
permite ejecutar y probar todas las funciones y módulos.

Antes de empezar es necesario que tengamos por lo menos dos gestiones de procesos Registrar,
Modifcar, Consultar y Eliminar (CRUD), con el fin de realizar las relaciones de uno a muchos y
muchos a muchos,
Necesitamos un CRUD por cada una de las relaciones si es de uno a muchos o si es de muchos a
muchos.

UNO A MUCHOS
Para esta relación tenemos que:
un USUARIO pueden tener MUCHOS celulares
un CELULAR puede tener un SOLO usuario.
Antes de iniciar debemos crear el controlador junto con su modelo y sus migraciones, escribiendo el
comando en la terminar de laragón.

php artisan make:model namemodel –mc -–resource


En el ejemplo que estamos trabajando queda de la siguiente manera:

php artisan make:model usuario -mc --resource y php


artisan make:model phone –mc--resource

Explicación sentencia anterior:


Con esta sentencia se crea el Modelo, la Migración y el Controlador.

Nota: es importante que creen de primero la migración que no


lleva la clave foránea. Para que a la hora de migrar las tablas
no tengamos errores.

- Creación de atributos de las tablas

1. Vamos a la carpeta database/migrations y agregamos los atributos a las tablas junto con
las foráneas.
Tabla: usuarios
Tabla: phones

2. Ahora vamos a la carpeta App y buscamos los modelos de las tablas para modificarlos.

Modelo: usuario
Modelo: phone

3. Vamos a la consola de laragón y escribimos el siguiente comando para migrar las tablas (como
ya saben y ya miraron el manual del crud, el archivo .env ya debe estar configurado y la base
de datos creada) “php artisan migrate”.

4. Nos dirigimos a la Carpeta app/http/controllers/PhoneController. Vamos a


codificar algunos de los métodos del controlador que vamos a necesitar en este guía.

ControladorPhone
5. En la carpeta resources/view vamos a crear dos folders: usuarios y phones,
dentro de cada folder vamos a crear dos archivos: créate.blade.php y
index.blade.php.

Resources/view/phones/créate.php:
Resources/view/phones/index.php
Ahora el folder usuarios.

Resources/view/usuarios/créate.php:
Resources/view/usuarios/indexphp:
Creamos un folder en la carpeta view y le llamamos layouts. Creamos dos archivos
app.php y footer.php
App.php
Footer.php

6. Vamos a la carpeta routes/web.php. Y agregamos la ruta del controlador.

7. Una vez haber creado nuestro modelo, controlador y las vistas, vamos a testear en el navegador
que funciona correctamente. Lo primero que vamos hacer es a crear un usuario ya que primero
debe haber usuarios para que puedan crear un phone.
8. Vamos a la vista de phone y le damos crear. En la vista de creación de phone
encontraremos un select y seleccionaremos de acuerdo a los usuarios existentes.
Como pudieron ver la relación de uno a muchos: un usuario puede tener muchos teléfonos y un
teléfono puede tener un solo usuario, en las tablas se ve reflejada la relación. Tener en cuenta que para
poder crear un teléfono primero debemos crear un usuario y así poder ir a la vista de teléfono/crear y
asignar el usuario al teléfono.
Ahora vamos a ver como funciona nuestro código en la consola de laravel llamada tinker. Esta es una
consola especial de laravel para testear código.
Para entrar a la consola de tinker escribimos el siguiente código:

php artisan tinker.

- Vamos a escribir el síguete comando para asignar a una variable el primer dato de la tabla
usuario “$usuarios = usuario::first()”.
- De igual forma lo hacemos con la tabla phone. Creamos un variable para asignar el primer dato.

- Ahora vamos a decirle que nos muestre los usuarios de phones. Recuerden que los datos que
tenemos en las variables son el primer dato de cada tabla y los usuarios que nos va mostrar son
los del primer dato phone.

- Escribimos el siguiente comando: $usuarios. Con este comando vamos a ver el usuario
junto con los teléfonos que están a su nombre.
- Escribimos $phones y veremos que el teléfono solo tiene un solo usuario.

RELACION MUCHOS A MUCHOS


Para esta relación utilizaremos otro ejemplo y empezaremos con otro crud para esta relación.
Un empleado puede tener muchos roles, y un rol puede tener muchos empleados.
De la misma forma como empezamos el ejemplo anterior creamos el modelo, controlador y
migraciones.

1. Vamos a la carpeta database/migrations y agregamos los atributos a las tablas junto


con las foráneas
Tabla: empleados

Tabla: roles
Tabla: empleado_role

2. Ahora vamos a la carpeta App y buscamos los modelos de las tablas y vamos a modificarlos.

Modelo: empleado
Modelo: role

Modelo: empleado_role
3. Vamos a la consola de laragon y escribimos el siguiente comando para migrar las tablas
(como ya saben y ya miraron el manual del crud, el archivo .env ya debe estar configurado
y la base de datos creada) “php artisan migrate”.

4. Carpeta app/http/controllers/PhoneController. Vamos a codificar algunos de


los métodos del controlador que vamos a necesitar en este guía.

EmpleadoController
RoleController
EmpleadoRoleController
5. En la carpeta resources/view vamos a crear tres folders: empleados, roles y
empleadoroles, dentro de cada folder vamos a crear dos archivos: créate.blade.php y
index.blade.php.
Resource/view/empleados/créate.php
Resources/view/empleados/index.php

Resources/view/roles/créate.php
Resources/view/roles/index.php
Resources/view/empleadoroles/créate.php
Resources/view/empleadoroles/index.php

- En resources/view/layout/app.php. en esa ruta dentro de un folder llamado layouts


un archivo llamado app.php se encuentra el código del layout la igual el footer.
App.php
Footer.php

6. Ahora vamos a la carpeta roures/web.php y agregamos las rutas de nuestras vistas.


7. Una vez creadas migraciones, modelos, controladores, rutas, vistas iremos al navegador y
vamos a crear un empleado y varios roles.
8. Después de creados los empleados y roles vamos a ir al terminal de laravel y entramos a la
consola de laravel para probar código “php artisan tinker” .

- Escribimos el siguiente comando $empleados = empleado::first() para obtener el


primer dato de la clase empleado y almacenarlo en $empleados, lo mismo vamos hacer con la
clase role, escribimos el comando $roles = Role::first()
- Con el método attach vamos a relacionar el rol que almacenamos en roles al método
empleados() y en un paréntesis escribimos $empleados donde se encuentra el nombre de
nuestro empleado. Él nos dará como respuesta null, esto quiere decir que nuestra relación fue
exitosa. Enseguida escribimos $roles->empleados para decirle a la consola que nos muestre el
empleado con el rol, y nos mostrara el nombre del empleado con la tabla pivot que se llama
“empresa” y el role_id = 1 que fue nuestro primer role que escogimos almacenar en $roles. A
continuación el código con la explicación.
- $empleados->roles decimos que nos muestre el rol del empleado.

- Escribimos $empleados para que nos muestre la clase junto con su relación, es decir, su rol.

- Miremos la vista en el navegador para ver cómo nos va quedando


- Ahora vamos hacer el mismo proceso. Vamos agregarle otro rol al mismo empleado.
- En nuestra vista de empleadoroles/index.php.

Das könnte Ihnen auch gefallen