Extending Doctrine ORM with Entity Attributes - September/2016
Details
Talk
To sell technical products in a webshop specific technical data must be presented. But there are thousends of different kinds of products that need different specifications. Even for a small shop traditional row modeling may lead to hundreds of tables. Entity-Attribute-Value models (https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model) one one way to solve this problem and offer the flexibility that is required to manage product data.
Doctrine (http://www.doctrine-project.org/) is the library of choice for Symfony 2 applications for storing and retrieving Entities. It would be interesting to see if its Document Mappers for MongDB and CouchDB can cope with technical product data, but currently ORM is the proven technology. It generally maps entity properties one to one to database columns. You can an associative array into a text field, but that has its limitations. An EAV model is can be implemented transparently with Doctrine ORM allowing typed, search-able and navigate-able and translate-able data.
This talk gives a short introduction to Doctrine and how it can be extended through its event listeners. Then it shows how Padam87/AtrrributeBundle (https://github.com/Padam87/AttributeBundle) implements simple EAV model through an event listener. Finally it discusses what requirements led to the development of a custom EAV extension, its design, and what complications occurred.
Speaker
Henk Verhoeven is an independent senior software developer. Last years he worked mostlty with Symfony 2 and Doctrine ORM. His open source project "AuthenticationGuardBundle (https://github.com/metaclass-nl/MetaclassAuthenticationGuardBundle)" was discussed on GroningenPHP Feb 6, 2014 (https://www.meetup.com/GroningenPHP/events/164198932/).
Schedule
19:30 - 20:00 Welcome Summerdrinks
20:00 - 21:00 Talk by Henk Verhoeven
21:00 Raffle PHP Storm
21:00 -?????: Share your ideas for future presentations, events and activities, also, socialise, drink beer and have fun :)