La mejor forma de utilizar Eloquent, ¿chau patrón de repositorios? 🤔

Deja un comentario

Comment as a guest.

  1. Hola Matias, gracias muy buen post, un detalle interesante es la «eloquencia» en los métodos del modelo para los scope, darle legibilidad permite no solo un mejor código si no mas descriptivo para que cualquier developer tenga una idea clara de lo que hace cierto código, excelente, yo trato de tener un standard, por ser eloquent tan facil intento mantener el llamado a eloquent en un controlador corto, y usar el patron repository solo para casos excepcionales, por ejemplo me conecto a un servicio como una api o algo externo, e incluso así me gusta nombrar métodos como first(), createOrUpdate() por ejemplo para mantener una consistencia en la legibilidad, me parecen muy interesantes tus posts, interesantes conceptos, saludos!

    1. La realidad es que el uso de repositorios esta reservado a los Data Mapper y en casos en los que requieres acceder a fuentes externas como el que mencionas. Fuera de eso, su uso mas común en Laravel es justificar código y pruebas ya que no agrega nada mas.

    2. Muchas gracias por tu comentario Ariel y esta perfecto que sigas los nombres de los métodos para seguir un standard! Saludos y gracias por visitar el blog.

  2. El patrón repositorio vendría a solucionar el único faltante que tiene laravel con el principio solid. Usar las relaciones de laravel ayudaría a la legibilidad del código.

    1. El patrón repository y el patron ActiveRecord (Eloquent) intentan resolver lo mismo de forma distinta, así que no tiene mucho sentido usarlo con Eloquent. Por otro lado hacer uso de los principios SOLID no requiere que utilices este patrón para que se cumplan. Y si quieres usarlo puedes utilizar otro ORM como Doctrine donde se justifica el uso de los repositorios.

    1. Las vistas son geniales en los reportes porque no cambian continuamente y los puedes representar como un modelo, pero no las recomiendo para manejar la lógica de negocio porque tendrías que modificar la vista mediante migraciones. Por otro lado es importante tomar en cuenta que las vistas tienen algunas limitaciones en las consultas ya que crea una tabla virtual cada vez que se usan.

  3. Hola, muy interesante; me queda una duda esta forma de utilizar eloquent es agregar más codigo a los modelos ¿ violaria el principio solid Principio de segregación de la interfaz ?

    1. Si, según el caso. Pero siempre puedes crear una nueva clase con los métodos que se relacionen. En mi canal de YouTube hice un vídeo de como enviar los scopes a otra clase.

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