Website | |
---|
Github / Bitbucket / Sourceforge | |
---|
License | |
---|
Latest version | |
---|
How schema is defined? | Model class properties |
---|
Code generation | |
---|
Can be used in Any Framework | Yes Through Capsule |
---|
Automated Cache | Yes |
---|
Anti-patterns (purposely included) | Eloquent is a God Class; Global functions; DB Conection is global; |
---|
Audience | |
---|
Dependencies | |
---|
Simplicity | 0 no rating |
---|
Enterprise Compliance | 3.0 1 rating |
---|
Minimum PHP Version | |
---|
Basic Features | |
---|
PDO Support | Yes |
---|
Transparent support for NoSQL | No Eloquent is built on Query Builder. Perhaps moloquent? Also - Through Caching backend, but not as ORM native persistence. |
---|
How to invoke db-vendor-specific extensions? | Yes Through Query Builder / RAW queries. |
---|
Array as a persistence | |
---|
RestAPI as a persistence | |
---|
JSON string as a persistence | |
---|
Same model, multiple persistences | |
---|
Basic Single-record operations (C,R,U,D) | |
---|
Table Name Mapping | Yes Same as model class name by default |
---|
Field Name Mapping | - Through accessors/3rd party extension |
---|
Map Entity to SubQuery | No Must be physical table. |
---|
Map property to expression | No Must be physical table |
---|
Map native types (DateTime) | Yes Accessors and Mutators |
---|
User-defined types (e.g. "23 USD") | Yes Accessors and Mutators |
---|
Map field of related Entity ('currency' = currency_id->Model Currency.name) | - Relationship, but only single record. |
---|
Map field to sub-query on related entity (Client.balance = Client->orders->sum(total)) | No |
---|
Entity to join multiple tables (adding new record populates both tables) | No |
---|
Criteria, Scope, Conditions (Model will refuse to work with records that does not match criteria) | |
---|
Support model-level criteria | - Global Scope (querying only) |
---|
Soft-delete | Yes Trait and Scope |
---|
Domain Model Criteria | - Scopes, but not in domain model. |
---|
Expression-based condition | Yes through Query Builder |
---|
Criteria Compliance (new record must match condition) | |
---|
Dynamic criteria | |
---|
Query Building (Convert Model into Query object for further SQL tweaking) | |
---|
Convert Model into Query Object | Yes Model is a Query object. See: Model::where() |
---|
Raw expression | Yes DB::raw() |
---|
Nested/Composite Queries/Expressions | No |
---|
Reference domain-model field in query | No No fields. Only properties. |
---|
field, where, order, limit | Yes |
---|
options, rollup, partition | |
---|
UPDATE, DELETE, INSERT query building | |
---|
REPLACE, TRUNCATE | |
---|
SHOW, DESCRIBE, CALL | |
---|
ALTER, CREATE query building | |
---|
User-defined query template | |
---|
full support for OR conditions | - Partial |
---|
Use Domain logic in multi-record update | No |
---|
Data Fetching (different ways to retrieve data from database) | |
---|
Get All Data (2x array) | Yes |
---|
Associative Array (id=>value) | Yes lists() |
---|
Select only required fields | |
---|
Typecasting (e.g. DateTime) | |
---|
Import (multiple records) | |
---|
Respect domain model mapping (and criteria) | |
---|
Single row | Yes |
---|
Single Value | Yes |
---|
Single Column | Yes |
---|
Iterator | Yes |
---|
Bypass persistence mapping | Yes ?? (e..g prevent date from being transformed into Carbon) |
---|
Loading and Saving individual records | |
---|
Load by ID | |
---|
Load by other field | |
---|
Read-only Models | |
---|
Model without primary key | |
---|
Specify fields to load | No Fields load with SELECT * |
---|
Save only sends dirty fields | Yes |
---|
Guarded / Fillable properties | Yes Prevents "create($_GET)" from messing up important fields. |
---|
Object Hierarchy Model | |
---|
Admin extends User, adds criteria (is_admin=1) | No |
---|
Admin extends User, adds accessible fields | No |
---|
Extend model, add Join (Disjoined SubTypes) | No |
---|
Extend model change table | |
---|
Relations/References (One model can relate to another model. NOT A TABLE JOIN) | |
---|
Model can define relation to other Model | Yes Relations |
---|
One-to-Many | |
---|
One-to-many traversal strategy | Returns array of objects that may either be pre-loaded with record
data or only contain IDs (lazy-loaded). |
---|
Lazy/Eager-loading | Yes |
---|
One-to-One | |
---|
Many-to-Many | |
---|
Deep Many-to-Many traversal. | |
---|
Cross-Persistence traversal | |
---|
Cross-persistence joins, aggregation, reporting | |
---|
Multi-persistence join | No |
---|
UNION existing models | No |
---|
Domain-model Aggregation | |
---|
Model to Model join | |
---|
Multi-persistence UNION | No |
---|
Behaviours / Hooks | |
---|
Before/After operation | |
---|
Override standard C,R,U,D operations | |
---|
Persistence-specific hooks (to modify Query) | |
---|
User-defined hooks | |
---|
Auditing | |
---|
Global Auditing | |
---|
Store old/new field values | |
---|
Revert action (undo) and replay (redo) | No |
---|
Reactive actions | |
---|
Store log in any persistence | |
---|
Override, Add fields to audit log | |
---|
Custom events | |
---|
Access to record-specific history | |
---|
Date of creation, modification | |
---|
User/IP creation, modification | |
---|
Store incremental revisions | Yes |
---|
Integration | |
---|
Field meta-information provided | |
---|
UI extensions | No |
---|
API extensions | |
---|
Like | 0 Likes |
---|
More comparisons
Comments
Leave a comment
Register Sign in