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

Deja una respuesta

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.

  3. Que es mas recomendable, hacer este proceso o crear una vista en la tabla con todo el query y solo llamarlo, el codigo no estaria mas limpio?

    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.

  4. 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.

  5. Buen día, Matias.

    Tengo una duda que me surgió al terminar de leer este articulo.
    Tengo un servidor con 5 BD, de los cuales las 5 BD tienen la misma estructura y tablas.
    BD: México -> Tabla: Productos
    BD: España -> Tabla: Productos
    BD: Canada -> Tabla: Productos
    BD: EUA -> Tabla: Productos
    BD: Francia -> Tabla: Productos

    Yo pretendo hacer una búsqueda en cada base de datos a la tabla productos donde busque en varias columnas, ¿Cuál sería la forma mas eficiente de hacerlo? ¿Tengo que crear un modelo por cada tabla?

    Nota, no puedo cambiar la estructura de las tablas o modelos, pues es de un sistema comprado.

    ¡Saludos y excelente articulo!

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