Obtener relaciones de modelos automáticamente en Laravel

Filtrar datos de tablas relacionadas con Eloquent

Deja una respuesta

Comment as a guest.

  1. Increíble que buen post como siempre, me dejo con una duda si estoy des actualizado, ya que yo no uso el with solo creo relaciones con los helpers hasmany() o belongsTo() en ambos modelos y esto me permite relacionarlos, creo que de la forma que lo colocas esta mas fácil,. mi pregunta es sera que estoy mal de la forma en que yo lo hacia? y otra pregunta cuando uso el método without() me imagino que también quita la carga del método withCount() no?

    1. Hola Ariel, muchas gracias por tu comentario.
      Esta bien que establezcas las relaciones con hasMany() y belongsTo(), es como se debe hacer. Lo que tal vez no estas haciendo bien es cuando llamas a las relaciones.
      Por ejemplo, si haces esto:

      $author = Author::first();
      @foreach($author->books as $book)
      

      Estas haciendo una consulta a la BD por cada vuelta del foreach, por lo tanto, si el autor tiene 10.000 libros, estarás haciendo 10.000 queries :/
      El método with() sirve para evitar esto. Ya que, si haces esto:

      $author = Author::with('books')->first();
      @foreach($author->books as $book)
      

      Estarás haciendo una consulta a la BD (sin contar la consulta por el autor, obviamente).
      Te acá toda la historia con el método with() jeje.

      Con respecto a la segunda pregunta, no. Si utilizas without() no quita la carga withCount, la cantidad de registros relacionados seguirán viniendo.
      No encontré un método para esto, pero lo voy a revisar o si alguien lo sabe, se agradece que lo dejen en los comentarios.

      Saludos.

  2. Una pequena acotacion, tambien hay que tener cuidado al usar el with en varios modelos que esten relacionados ya que podrias acabar con una relacion recursiva, es decir este modelo trae su relacion, que trae el modelo original, y asi infinitamente!

Sliding Sidebar

Matias Echazarreta

¡Hola!

Mi nombre es Matias Echazarreta.
Soy desarrollador web con más de 12 años de experiencia. Amante de Laravel, de los libros y del rock de los ’90. Te puedes comunicar conmigo  por trabajos de contratación, haciendo click aquí.

Nuestro Patreon

Desde Patreon puedes solicitar asesoria personalizado. ¡Ir a Patreon!

Suscríbete a nuestra lista de correo