37 - Relaciones muchos a muchos (Many To Many) - Curso Laravel 10 desde cero

Поделиться
HTML-код
  • Опубликовано: 10 ноя 2020
  • En una relación muchos a muchos, cada registro en una tabla puede estar relacionado con varios registros en otra tabla y viceversa. Para establecer esta relación se requiere una tabla intermedia, la cual contiene las claves foráneas de ambas tablas relacionadas como claves primarias.
    Un ejemplo común de una relación muchos a muchos es una tienda online, donde un producto puede ser comprado por muchos clientes, y a su vez, un cliente puede comprar varios productos. En este caso, se crea una tabla intermedia de pedidos que contiene las claves foráneas de las tablas de clientes y productos, y se relaciona cada compra con el cliente y el producto correspondiente. La relación muchos a muchos es una de las relaciones más utilizadas en las bases de datos y es una forma efectiva de modelar relaciones complejas entre entidades.
    ------------------------------------------------------------------------------------------------
    CURSOS
    🔴 Facturacion electronica Perú: youtube.codersfree.com/larave...
    🟠 Laravel avanzado: youtube.codersfree.com/larave...
    🟢 Ecommerce: youtube.codersfree.com/ecommerce
    🔵 Api: youtube.codersfree.com/api-re...
    🟠 Plataforma de cursos: youtube.codersfree.com/plataf...
    🔴 Vue e Ineria: youtube.codersfree.com/vue-3-...
    🟣 Eloquent Avanzado: youtube.codersfree.com/eloque...
    🟡 Pasarela de pagos: youtube.codersfree.com/pasare...
    ⚫ Laravel Web Socket: youtube.codersfree.com/larave...
    🟣 Notificaciones: youtube.codersfree.com/notifi...
    🟢 Laravel Excel: youtube.codersfree.com/larave...
    🔵 Digital Ocean: youtube.codersfree.com/despli...
    🟡 Laravel Voyager: youtube.codersfree.com/larave...
    🟣 Datatable Livewire: youtube.codersfree.com/datata...
    🟠 Tenancy for Laravel: youtube.codersfree.com/multi-...
    🔵 TDD Laravel: youtube.codersfree.com/tdd-la...
    ⚫ Traducir páginas: youtube.codersfree.com/traduc...
    🟠 Wire UI: youtube.codersfree.com/livewi...
    🔴 Acortador de links: youtube.codersfree.com/acorta...
    🟡 Banhammer for laravel: youtube.codersfree.com/banham...
    🟢 Laravel backup: youtube.codersfree.com/larave...
    🔵 Actualizar a Laravel 10: youtube.codersfree.com/actual...
    -----------------------------------------------------------------------
    DONACIONES
    Patreon: / codersfree
    PayPal: www.paypal.com/paypalme/Coder...
    -----------------------------------------------------------------------
    Plataforma: codersfree.com/
    Grupo: / 4314830498588670
  • НаукаНаука

Комментарии • 78

  • @rodrigoluque1453
    @rodrigoluque1453 2 года назад

    Excelente explicación, encima metes tinker en medio que no sabía de su existencia. Mucha gracias!!

  • @charleswhyte4123
    @charleswhyte4123 3 года назад +1

    Te felicito y agradezco. Muy buena explicacion de las relaciones.

  • @omareliotorrescastillo4808
    @omareliotorrescastillo4808 3 года назад +1

    Este video esta excelente, se aprende todo lo baśico, nada mas estaría bien este video, pero sin "Tinker", sino con botones en Laravel para designar roles.

  • @carloscartagena6724
    @carloscartagena6724 3 года назад +1

    Muy buena explicación Víctor eres muy buen docente felicidades

  • @tomascadenalucas9542
    @tomascadenalucas9542 3 года назад +1

    Justo estaba viendo el video anterior pensando "ojala suba el video de relación muchos a muchos pronto"

  • @leosvanygonzalezalmenares5601
    @leosvanygonzalezalmenares5601 3 года назад +1

    Magnifico Curso Esperamos cada semana que salgan mas capítulos gracias por lo que nos brindas

    • @CodersFree
      @CodersFree  3 года назад

      A partir de mañana retomo con el curso 😁

  • @jmaurich
    @jmaurich 3 года назад

    Muy bueno como siempre Victor. uchas gracias.

  • @zantsama
    @zantsama 4 месяца назад

    Muy buena clase

  • @TheCarxu
    @TheCarxu 3 года назад

    Oye men, muy buen video y muy bien explicado, merecidísimo like

  • @ssupercrack
    @ssupercrack 2 года назад

    Gracias por tus vídeos. TQ

  • @aztecsavo82
    @aztecsavo82 3 года назад

    Excelente vídeo, muchas gracias \m/

  • @jecode1676
    @jecode1676 2 года назад

    esta genial toda la información

  • @jorgeperalta9780
    @jorgeperalta9780 8 месяцев назад

    excelente video. muchas gracias

  • @alvertkennedyrodriguezcard7785
    @alvertkennedyrodriguezcard7785 3 года назад

    Excelente explicación

  • @isaiasezequielmelgarejo9185
    @isaiasezequielmelgarejo9185 2 года назад

    Estaba sufriendo con un codigo... No es exactamente lo que necesitaba pero me oriento bastante y pude sacarlo. Graxx

  • @alexischacon4666
    @alexischacon4666 Год назад

    Gracias

  • @kathleenbucarito8756
    @kathleenbucarito8756 3 года назад

    Gracias, pro!

  • @frezzer33
    @frezzer33 3 года назад +2

    Solo vos te mereces que vea todos los anuncios . saludos

    • @rodrigoluque1453
      @rodrigoluque1453 2 года назад

      Mientras pasa el/los anuncio/s, tomó un respiro y agua y sigo viendo. Excelente contenido.

  • @josebriceno7693
    @josebriceno7693 2 года назад

    Gracias!

  • @manug6186
    @manug6186 11 месяцев назад

    muy buen video

  • @bherringpaucar7206
    @bherringpaucar7206 3 года назад +2

    Hola, excelente video. Tengo una pregunta ¿cuál es la extensión que utilizas para autocompletar sintaxis de Laravel en visual studio code?

  • @merceiranzo8146
    @merceiranzo8146 3 года назад +3

    Buenas, como se podrían relacionar tres modelos con dos tablas de M:M.
    Es decir tengo la tabla A, B y C, luego la AB(relación M:M entre A y B) y por último la ABC(relación M:M entre AB y C), como podría hacer que C tuviera acceso tanto a datos del modelo A como del B? Saludos.

  • @bimbo34545
    @bimbo34545 Год назад +1

    Deberías realizar un curso de diseño de bases de datos relacionales, con algunos ejemplos... Te lo agradecería mucho

    • @reneriquelme9360
      @reneriquelme9360 Год назад +1

      si lo tiene, pero en su plataforma que es de paga, hay varios proyectos con relaciones

  • @lingberlupu2296
    @lingberlupu2296 3 года назад +2

    Buen video ...
    tengo una pregunta. en la tabla pivote puedo agregar mas campos??
    y como podría hacerlo ??
    Gracias ... Espero su respuesta porfavor

  • @AntonioGonzalez-dd2ce
    @AntonioGonzalez-dd2ce 3 года назад

    Hasta ahora me explicaban el como, pero tu además explicas el porque? (mil gracias) elevado a n....

  • @andresjesus2147
    @andresjesus2147 3 года назад +1

    Gracias por el contenido; pregunta... Veo que con el attach se inserta facil el registro por los ID's ; pero si esa tabla permiso_rol tuviera campos adicionales, como sería ? Lo pregunto porque me gustaría agregarle las columnas de create, read, update y delete; dado que para mi caso diferentes roles van a tener acceso a la misma vista; pero quiero restringir las acciones que pueden realizar. De nuevo gracias por tu contenido

  • @miguelmunoz7868
    @miguelmunoz7868 3 года назад +3

    Buenos videos! una pregunta. ¿Es obligatorio ponerle un ID a la tabla role_user?

  • @andreseduardopenagos6169
    @andreseduardopenagos6169 3 года назад

    hola victor muchas gracias por este vides. tengo una duda, tengo una tabla llamada perfil y esta tiene una relacion de uno a uno con otra tabla que es informacion personal luego la tabla perfil tiene una relacion de muchoa a muchos con otra tabla llamada cursos. la pregunta es si es posible acceder a la tabla informacion personal desde la tabla curso?? y de ser asi como seria en tinker

  • @ErickJovanDev
    @ErickJovanDev Год назад +2

    Me hubiera gustado que la tabla pivote fuera con una llave compuesta, ¿Tienes algún video donde expliques el tema?

    • @ceaefe
      @ceaefe Год назад +1

      Si entiendo bien, en la tabla pivote puedes agregarlo, por ejemplo con la tabla pivote entre usuarios y roles: $table->unique(['user_id', 'role_id']);

  • @horrornocturno1344
    @horrornocturno1344 Год назад +1

    y como se haria, al insertar los roles de usuario, el usuario 1 puede tener 2 veces el rol de administrador, es eso valido??

  • @MT-ox3gz
    @MT-ox3gz 2 года назад

    Consulta, yo tengo las siguientes tablas: variantes, caracteristicas, caracteristica_producto y productos. Básicamente entre productos y características hay una relación de muchos a muchos, esto funciona bien, sin embargo, entre variantes y características hay una relación de uno a muchos (una variante puede tener muchas características). Me gustaría saber si es posible recuperar el nombre de la variante padre a partir de la relación muchos a muchos que hay en caracteristica_producto. Cuando le hago debug en tinker me returna correctamente el id de la variante a la que pertenece la característica pero a mi me gustaría obtener el nombre. Alguna idea?

  • @momeromomos2076
    @momeromomos2076 2 года назад +1

    Como mandarias llamar eso mediante las rutas api? y el controllador?

  • @aaronfabriciosantacruzvald8101
    @aaronfabriciosantacruzvald8101 10 месяцев назад

    una pregunta y como hago para acceder a la informacion de una tabla intermedia??

  • @brandonvillegas6301
    @brandonvillegas6301 3 года назад

    Una pequeñisima duda, porque los timestamps no se aplican?, aparecen nullos en el video y ya probe el attach() en un formulario y no se registran los timestamps. Excelente Video

  • @franciscoguedez9342
    @franciscoguedez9342 Год назад

    Maestro, no tiene una aplicación en Laravel, en donde se pueda manipular la relación N:M, 1:N, con formularios?

  • @gilbertodelacruzsaravia6192
    @gilbertodelacruzsaravia6192 3 года назад

    Hola, muy buena explicacion, excelente. Quisiera ver como se podrian guardar registros en una tabla pivote a través de un CRUD

    • @albertoarroyo827
      @albertoarroyo827 2 года назад

      así se puede agregar otros datos a la tabla pivote $user->roles()->attach($roleId, ['expires' => $expires]);

    • @armandsanchez1868
      @armandsanchez1868 2 года назад

      @@albertoarroyo827 hola amigo feliz día.
      Tengo este problema se construir el query pero no sé cómo llamarlo... No desde donde si ya tengo el usercontroller lleno de su propio crud es decir la ruta user ya está en uso para su crud como hago para ejecutar el query

    • @franciscoarroyo8678
      @franciscoarroyo8678 2 года назад +1

      @@armandsanchez1868 Que tal amigo, tendrías que hacer una consulta como esta: $entradas = Articulo::find($x)->entradas; ó puedes consultar a través de la relación $articulo = Articulo::with('entradas')->find($x); $entradas = $articulo->entradas;

    • @armandsanchez1868
      @armandsanchez1868 2 года назад

      @@franciscoarroyo8678 hola hermano gracias 💪

    • @javiermauriciolizcajimenez6919
      @javiermauriciolizcajimenez6919 Год назад

      A mi me falta el editar y eliminarpara tener un crud, y nada que entiendo

  • @makjimenez5431
    @makjimenez5431 2 года назад

    Una duda si tengo 2 relaciones de muchos a muchas digamos, alumnos y talleres. Y es belongToMany. Quiero obtener los datos del alumno y obtener los datos de los talleres de ese alumno en particular. Ya lo intente realizar asi $al = alumno::find($id). Y luego $al->talleres. Al momento de hacer si me trae los datos pero intento obtener digamos $al->talleres->taller, me dice que la instancia no existe. Pero al hacer $al->talleres sin imprime todo. Pero intento acceder a uno especifico no puedo. Ayudar porfavor.

  • @bryanmora4996
    @bryanmora4996 3 года назад

    Como puedo hacer el seeder para la tabla role_user?

  • @gabrielecangelli8546
    @gabrielecangelli8546 3 года назад

    Hola! Primero decir que me encantan tus cursos, eres muy pedágogo! Sin embargo, si quisiese rellenar mi tabla pivot, sin usar tinker, dónde tendría que poner el método attach() exactamente?En dataseeder?

    • @CodersFree
      @CodersFree  3 года назад +1

      Si estas llenando con datos de prueba puedes utilizar los seeders, si estás trabajando con datos que vienen de un formulario, desde un controlador

    • @armandsanchez1868
      @armandsanchez1868 2 года назад

      @@CodersFree Hola se me complica bastante este caso del controlador... Que controlador debo usar? El de users? O el de roles?
      Estoy atascado allí tengo mis rutas de users (Index show create destroy stores en uso para el crud de users) como hago no entiendo si debo crear una nueva ruta controlador y modelo para role_user

  • @juanzu7647
    @juanzu7647 3 года назад

    Bien explicado. Podrías realizar un pequeño curso donde se implemente la funcionalidad de estas tablas en un sistema? busque en tu canal pero solo veo utilizando la librería permission. Se le agradece una pronta respuesta.

    • @CodersFree
      @CodersFree  3 года назад +1

      Hola, cuento con cursos prácticos en Udemy. Lo puedes adquirir cuando gustes 😁

    • @juanzu7647
      @juanzu7647 3 года назад

      @@CodersFree ya compre el curso de livewire. Quisiera saber en cual de los cursos en especifico explicas lo de los permisos y roles sin librerias? Para ir a comprarlo

    • @CodersFree
      @CodersFree  3 года назад

      No tengo ningun curso de livewire en Udemy

    • @juanzu7647
      @juanzu7647 3 года назад

      @@CodersFree me refiero a un curso donde usas livewire: Crea un Ecommerce con Laravel, Livewire, Tailwind y Alpine. Ese lo compre no se si ese tendrá la explicación de los roles y permisos sin librerías.

    • @CodersFree
      @CodersFree  3 года назад

      @@juanzu7647 comprendo juanzu, no cuento con ningún curso en el que implemento roles y permisos sin un paquete. Soy el de la idea de que no hay que reinventar la rueda

  • @yeseniaperezcolina7674
    @yeseniaperezcolina7674 2 года назад

    disculpa como seria guardar eso pero en un formulario

  • @iam.p3p0
    @iam.p3p0 3 года назад

    Hola, este video no está ingresado en el playlist de "Curso Laravel 8 desde cero"

    • @CodersFree
      @CodersFree  3 года назад

      Gracias por avisar, ahorita lo agregó

  • @samirmahmud4421
    @samirmahmud4421 3 года назад

    Como puedo traer por consola de tinker la relacion $user->roles, ya que al aplicar este metodo me devuelve null

    • @samirmahmud4421
      @samirmahmud4421 3 года назад

      SELECT U.id , U.name, R.name FROM users AS U INNER JOIN role__users AS RU
      ON
      U.id = RU.user_id INNER JOIN roles AS R
      ON R.id = RU.role_id
      Cuando efectuo la consulta por la consola de phpmyadmin me devuelve los resultados correctos. Solo que en Tinker no se como realizar la consulta que me devuelva los resultados

  • @frezzer33
    @frezzer33 3 года назад

    hola crack una pregunta como hago para crear el modelo que me relacione con esa tabla : seria php artisan make:model ClientePlan asi? ya quedaria de una vez relacionada si mi tabla fuese cliente_plan

    • @CodersFree
      @CodersFree  3 года назад +1

      No entendí la pregunta 🤔

    • @frezzer33
      @frezzer33 3 года назад +1

      @@CodersFree jeje te cambio la pregunta , para yo llenar la tabla pivote es necesario crear su modelo respectivo? si no es asi como lo aria sin usar un modelo,

  • @raulflores5514
    @raulflores5514 2 года назад

    Hola comunidad ! alguien me podria ayudar a eliminar un registro de un tabla intermedia utilizando detach()
    Tengo la siguiente consulta:
    $ingreso=Ingresoi::Where('id',9)->first()->insumos->find(10014)->detach(10014);
    Pero me muestra el siguiente error, como si no reconociera el método detach.
    BadMethodCallException with message 'Call to undefined method App\Models\Insumo::detach()'
    Nota: Si quito el detach me devuelve la consulta de manera correcta pero cuando lo agrego en automatico se rompe.

  • @josemanuelmalaverarodrigue1643
    @josemanuelmalaverarodrigue1643 3 года назад

    PHP Error: Call to a member function sync() on null in Psy Shell code on line 1 me aparece este error al querer agregar los roles por tinker, me podrian ayudar por favor.

    • @danielmarcosmunoz6574
      @danielmarcosmunoz6574 3 года назад

      En mi caso ese error era por 2 cosas, Que ponía Barras "/" en vez de Contrabarras "\" en la url de us App\Models\Event en mi caso. Y que ponia Model en vez de Models que es como se llama.

  • @matiasflores7055
    @matiasflores7055 3 года назад

    Victor que nos permite hacer esta relacion?

    • @matiasflores7055
      @matiasflores7055 3 года назад

      Podemos crear un nuevo usuario con un rol de admin por ejemplo?

  • @CesarDMansilla
    @CesarDMansilla 3 года назад

    Hola. ¿No quedó mal estructurada la tabla role_user? Porque tiene como clave primaria su ID, y ninguna restricción de claves únicas. Lo que permite que se ingrese por ejemplo, 2 veces el mismo ID de rol a un mismo usuario. Saludos!

    • @CodersFree
      @CodersFree  3 года назад +2

      Si podría ser, podríamos agregarle esa protección a nivel de base de datos. Aunque igual a nivel de backend no vamos a permitir que se duplique los datos

    • @CesarDMansilla
      @CesarDMansilla 3 года назад

      @@CodersFree gracias por responder. Intenté hacerlo a través de una nueva migración, tal como explicaste en el capítulo 8. Me funciona correctamente el método up, pero tengo problemas con el down, intento revertir para dejar todo como estaba y obtengo errores.
      ¿Podrías en algún momento, o de alguna forma mostrarme cómo resolver esto?
      Aclaro que si modifico directamente la migración inicial puedo hacerlo, pero me interesaría entender cómo aplicar este tipo de cambios estructurales.

  • @xxkillgamerxx8579
    @xxkillgamerxx8579 3 года назад

    no me funciona $table->foreign('vault_id')->references('id')->on('vaults')->onDelete('cascade');

  • @georyittgorayeb1900
    @georyittgorayeb1900 3 года назад +1

    en many to many si quieren la tabla intermedia con un nombre diferente usen
    return $this->belongsToMany('App\Models\Region', 'alcance', 'partner_id', 'region_id');
    ruta del modelo, nombre de la tabla intermedia, id_foreigntabla1, id_foreigntabla2
    funciona exactamente igual a hasMany

  • @ryften5713
    @ryften5713 3 года назад

    Perdon no me deja reproducirlo, al 33 tampoco

    • @CodersFree
      @CodersFree  3 года назад

      No entendí

    • @ryften5713
      @ryften5713 3 года назад

      @@CodersFree no me dejaba reproducirlos pero era RUclips que había caído jaja, aprovecho a decirte que gracias por el curso sos un genio!

  • @danielayala5732
    @danielayala5732 3 года назад

    Excelente explicación