Compare Sizes
Register
English Français Español

Yii ORM

1
PHP Data Access Libraries (ORM, ActiveRecord, Persistence)
Name
Yii ORM
Webseiteyiiframework.com
Github / Bitbucket / Sourceforgegithub.com/...
LicenseBSD-3
Latest version2.0.10
How schema is defined?Active record magic properties.
Code generationJa Web and console generator https://github.com/yiisoft/yii2-gii
Can be used in Any Framework- Planned in 2.1.x
Automated CacheJa
Anti-patterns (purposely included)
Audience
Dependencies
Simplicity
5.0/5 2 ratings
Enterprise Compliance
4.5/5 2 ratings
Minimum PHP Version5.4
Basic Features
PDO SupportJa
Transparent support for NoSQLJa Avialable cross sql and nosql datababase relations (https://github.com/yiisoft/yii2-mongodb)
How to invoke db-vendor-specific extensions?Ja SQL - Query Builder.
Array as a persistenceJa https://github.com/yii2tech/filedb
RestAPI as a persistence- To extend BaseActiveRecord
JSON string as a persistence- To extend BaseActiveRecord
Same model, multiple persistences- (no docs)
Basic Single-record operations (C,R,U,D)
Table Name MappingJa Using static method of active record. http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#declaring-ar-classes
Field Name MappingJa
Map Entity to SubQuery- table = new Expression(..)
Map property to expression- (couldn't find docs)
Map native types (DateTime)Ja Active record behaviors
User-defined types (e.g. "23 USD")Ja Active record behaviors
Map field of related Entity ('currency' = currency_id->Model Currency.name)Ja $model->currency->name
Map field to sub-query on related entity (Client.balance = Client->orders->sum(total))- (couldn't find docs)
Entity to join multiple tables (adding new record populates both tables)Nein No native support.
Criteria, Scope, Conditions (Model will refuse to work with records that does not match criteria)
Support model-level criteriaNein
Soft-deleteJa Events and behaviors
Domain Model CriteriaNein Only for specific query: User::find()->byEmail('...')->active()->one()
Expression-based conditionNein Only for query: User::find()->andWhere('...')->all()
Criteria Compliance (new record must match condition)Nein
Dynamic criteriaNein Only Querying: User::find()->where(['a' => '1', 'b' => true])->all();
Query Building (Convert Model into Query object for further SQL tweaking)
Convert Model into Query ObjectJa \yii\db\ActiveRecord::find()
Raw expressionJa new \yii\db\Expression('...')
Nested/Composite Queries/ExpressionsJa Expression can be in any part of query
Reference domain-model field in queryNein Field is class property.
field, where, order, limitJa \yii\db\ActiveQuery
options, rollup, partition
UPDATE, DELETE, INSERT query buildingJa
REPLACE, TRUNCATE- Throught raw sql in \yii\db\Command
SHOW, DESCRIBE, CALL- Throught raw sql in \yii\db\Command
ALTER, CREATE query buildingJa
User-defined query templateJa (please link doc)
full support for OR conditions-
Use Domain logic in multi-record updateNein
Data Fetching (different ways to retrieve data from database)
Get All Data (2x array)Ja \yii\db\Query::all()
Associative Array (id=>value)
Select only required fields
Typecasting (e.g. DateTime)
Import (multiple records)
Respect domain model mapping (and criteria)
Single rowJa \yii\db\Query::one()
Single ValueJa \yii\db\Query::scalar()
Single ColumnJa \yii\db\Query::column()
IteratorJa
Bypass persistence mapping
Loading and Saving individual records
Load by IDJa User::findOne(1)
Load by other fieldJa User::findOne(['id' => 1])
Read-only Models
Model without primary key
Specify fields to loadJa User::find()->select([])->one()
Save only sends dirty fieldsJa
Guarded / Fillable properties
Object Hierarchy Model
Admin extends User, adds criteria (is_admin=1)Nein Can be done as wrapper: User::findAdmin(..) or custom CDbCriteria
Admin extends User, adds accessible fieldsNein
Extend model, add Join (Disjoined SubTypes)Nein
Extend model change table
Relations/References (One model can relate to another model. NOT A TABLE JOIN)
Model can define relation to other ModelJa Relations
One-to-ManyJa
One-to-many traversal strategyUses classical eager/lazy loading approach. with() can help pre-fetch the data for related entities.
Lazy/Eager-loadingJa
One-to-OneJa
Many-to-ManyJa relations() method of an entity can define.
Deep Many-to-Many traversal.- only with "to-one" references: $book->author->address->street; Executes multiple queries.
Cross-Persistence traversal- No docs.
Cross-persistence joins, aggregation, reporting
Multi-persistence join
UNION existing models
Domain-model Aggregation
Model to Model join
Multi-persistence UNION
Behaviours / Hooks
Before/After operationJa
Override standard C,R,U,D operationsJa
Persistence-specific hooks (to modify Query)- (no docs)
User-defined hooksJa
Auditing
Global Auditing
Store old/new field valuesJa
Revert action (undo) and replay (redo)Nein
Reactive actions
Store log in any persistenceNein
Override, Add fields to audit log
Custom eventsJa
Access to record-specific history- Through a custom query.
Date of creation, modificationJa \yii\behaviors\TimestampBehavior
User/IP creation, modificationJa \yii\behaviors\BlameableBehavior
Store incremental revisions
Integration
Field meta-information provided
UI extensionsNein
API extensions
Products
English
Public
Public
2017-12-21 16:45:09
View changes

User reviews and comments