7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. Laravel 5

El Patrón de Repositorio en Laravel 5

Scroll to top
Read Time: 5 mins

Spanish (Español) translation by Elías Nicolás (you can also view the original English article)

El patrón de repositorio fue presentado por primera vez por Eric Evans en su libro de diseño dirigido por el dominio. El repositorio es, de hecho, el punto de entrada para que la aplicación acceda a la capa de dominio.

Para decirlo simplemente, el repositorio permite que todo su código utilice objetos sin tener que saber cómo se persiste el objeto. El repositorio contiene todo el conocimiento de la persistencia, incluida la asignación de tablas a objetos. Esto proporciona una vista más orientada a objetos de la capa de persistencia y hace que el código de asignación sea más encapsulado.

La única manera de hacer que sus repositorios funcionen en Laravel (como un verdadero repositorio—Eric Evans Domain-Driven Design book) es cambiar el ORM predeterminado del active record al data mapper. El mejor sustituto es Doctrine.

La Doctrine ORM

Doctrine es un ORM (mapeo objeto-relacional) que implementa el patrón de data mapper y le permite hacer una separación clara de las reglas de negocio de la aplicación de la capa de persistencia de la base de datos. Doctrine utiliza DQL, en lugar de SQL. DQL le trae lenguaje de consulta de objeto, lo que significa que en lugar de un término de consulta relacional tradicional, tendría consultas en términos de objeto.

Le permite escribir las consultas a base de datos de una manera orientada a objetos y ayuda cuando necesita consultar la base de datos de una manera que no se puede lograr utilizando los métodos de repositorio predeterminados. En mi opinión, DQL es la manera más poderosa de mantenerse en contacto con su base de datos.

Doctrine vs. Eloquent

Las entidades de Doctrine son simplemente una clase sencilla de PHP y no añaden sobrecarga a ninguna herencia de ORM. Doctrine gestiona sus solicitudes de consulta múltiple con la misma herencia sin golpear la base de datos, lo que significa que el objeto entidad existe para toda la solicitud.

La otra característica interesante de Doctrine es que en lugar de migrar archivos para crear el esquema de la base de datos, la base de datos se crea automáticamente para reflejar los metadatos en las anotaciones de la entidad. Por otro lado, Eloquent es menos complicado y muy fácil de usar.

Una comparación completa entre estos dos requeriría un artículo separado. Como puede ver, un objeto Doctrine es más claro y más abstracto. Sin embargo, Doctrine sólo se ajustará a proyectos específicos, por lo que puede traer sobrecarga a veces. Creo que depende del programador para elegir el mejor ORM para la aplicación.

La aplicación Blog

Ahora es el momento de crear una aplicación de blog con Laravel. Primero, necesitamos configurar Doctrine. Hay un bridge para permitir la armonizar con la configuración existente de Laravel 5. Para instalar Doctrine 2 dentro de nuestro proyecto Laravel, ejecutamos el siguiente comando:

Como de costumbre, el paquete se debe agregar a la app/config.php, como el proveedor de servicios:

El alias también debe configurarse:

Finalmente, publicamos la configuración del paquete con:

Ahora terminamos aquí.

Las entidades son partes importantes de la aplicación App\Entities\Post.php:

Ahora es el momento de crear el repositorio, que se describió anteriormente. App/Repositories/PostRepo.php :

El controlador: App/Http/Controllers/PostController.php :

Como puedes ver, he usado el ayudante de Flash para administrar los mensajes (puedes usar el de Laravel). Con respecto al Validador, debo agregar que usted puede crear su propio (como yo) o usar el de Laravel por defecto, dependiendo de su preferencia.

Los archivos de View son los mismos de siempre. En este ejemplo, el archivo View se parece a resources/views/admin/edit.blade.php :

El enrutamiento y otras operaciones serían como de costumbre.

Conclusion

Ahora puedes ver cómo puedes crear fácilmente un repositorio basado en Doctrine en Laravel 5.0, que resultará en muchos beneficios.

Para aquellos de ustedes que están apenas comenzando con Laravel o buscando ampliar su conocimiento, sitio o aplicación con extensiones, tenemos una variedad de cosas que pueden estudiar en Envato Market.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.