This module is a set of base component and connectors to integrate Doctrine ORM with Drupal Core. The Doctrine Object Relational Mapper sits on top of a powerful database abstraction layer (DBAL). One of its key features is the option to write database queries in a proprietary object oriented SQL dialect called Doctrine Query Language (DQL), inspired by Hibernates HQL.
This module provides integration with Doctrine ORM, giving developers a powerful alternative to SQL that maintains flexibility without requiring unnecessary code duplication.
Designed with a few goal in mind:
- Maintainability: the software will evolves with the Doctrine library and with versions of Drupal, the code base is written to cope with a changed environment. Test suit is the same quality as the software itself, allowing the isolation of defect for further correction and ensure new requirements will not break anything, thus, making future maintenance easier.
- Dependability: it does what it claims, and is trustworthy. The code is optimized to run for limited resources computers with special care to cache optimizations or any form of I/O which are costly.
- Usability: Developers can save and load Plain Old PHP Object (POPO) with SQL without the needing of extending a base class or implementing an interface. Default mapping is done through annotations, but as the Entity API connector and Field API connector, you can add more driver to understand your conceptual data model.
- Entity API Mapping Driver: Reverse engineering from hook_schema() and hook_entity_info(). The mapping driver will generates class entities from an entity declaring a 'entity class' in their info hook.
- Field API Mapping Driver: Reverse engineering from hook_field_info(). The mapping driver will generates class entities from any fields declared.
- Generation of entites: By reading the schema API and the 'fields' meta-data, the driver is able to generate annotated entitites.
- Foreign key support: the 'foreign keys' meta-data allows the driver to generate association mapping between entities. The reverse engineering capability is able to detect a OneToOne, OneToMany, and ManyToMany relationship through join tables.
It contains a set of connectors which integrates drupal modules:
- Entity API: TODO: description.
- Field API: TODO: description.
Roadmap is on the go, more information and contribute: