Agile Data is a PHP framework focused on improving database scalability, reducing query latency and abstracting compatible RDBMS and NoSQL features.
Learning from the successes and failures of ORM, Active Record, Query Builder and Data Mapper, Agile Data introduces a NEW and UNIQUE data access patterns that are ready for use by novice developers and enterprises to access Relational Databases, realtime BigData sources and custom APIs.
Agile Data is written in PHP with minimum dependencies. It is licensed under MIT and can be used inside any PHP Framework, application and even with Wordpress plugins.
Download Agile Data 1.1.11
Unique Benefits of Agile Data
Think of Agile-Data as an object-oriented "language" for your App to communicate with a database instead of using raw SQL. Compared to alternative solutions such as ORM or Active Record, Agile Data:
- Does not restrict you from using powerful features including Sub-queries, Joins, Expressions, Aggregation and Multi-record operations.
- Allows the developer to seamlessly use SQL and NoSQL databases - cross-vendor references, easy entity migration, data augmentation and encapsulation.
- Focuses on minimizing amount of code you have to write, queries you have to execute and data you have to load/save.
- Full Domain Model separation. The rest of the app does not have to know how/where the data is stored.
Unique Data Access Patterns
Our code is built on a completely new data access pattern called "DataSet and Action Mapping". Here is a list of the fundamental concepts:
- A single in-memory object represents accessible record scope inside a database
- Actions (also known as Queries) can be executed only on DataSet records.
- Actions are not limited to single-record Add, List, Update and Delete. They can be extended based capabilities of DB and persistence driver.
- One record in DataSet can be made Active (loaded).
- Reference traversal is a way to look-up relevant DataSet without physically loading any Data.
- One model can import fields from related model through sub-query or aggregation.
Integration with UI Framework
Because developers can control which fields to query from a Model, the design of Model Entities in Agile Data makes it extremely simple for them to use Data Source with UI widgets such as Forms, Tables and Lister Templates.
Somehow we forgot to implement "or" conditions. Spotted and implemented in version 1.1.11.
For all your aggregation needs. Use your Domain Models to GROUP and UNION without hardcore queries.
We are now officially in the "stable" mode. Expect less releases and more focus on stability.
Practical event sourcing for your PHP project. Full audit trail and UNDO functionality.
Added a strong type support as well as many bugfixes and improvements.
- Change: Renamed Field_One/Field_Many into Relation_One/Relation_Many
- Fix: addCondition(field, [..])
- Add: hasMany()->addFields();
- Fix: hasOne relation traversal on unloaded model
- Fix: hasOne accepts default value
- Fix: subqueries are using aliases
- Add: added advanced docs
- Add: added Field->set()
- Add: added Field->mandatory
- Fix: random bugfixes
Full Release History
- Fix: insert() cloning
- Fix: ref() without active record works
- Add: title_field support
- Add: ref() hasOne save hook
- Add: isDirty()
- Add: afterUnload/beforeUnload hooks
- Add: automatic model reloading
- Add: advanced usage pattern doc
- Add: support for related alias
- Fix: bugs with joined table save
- Add: withID()
- Fix: preserve dirty flags for afterSave
- Fix: set twice, then unset