Site web | http://www.yiiframework.com/ |
---|
Github / Bitbucket / Sourceforge | https://github.com/yiisoft/yii2 |
---|
Licence | BSD-3 |
---|
Dernière version | 2.0.10 |
---|
How schema is defined? | Active record magic properties. |
---|
Code generation | Oui Web and console generator https://github.com/yiisoft/yii2-gii |
---|
Can be used in Any Framework | - Planned in 2.1.x |
---|
Automated Cache | Oui |
---|
Anti-patterns (purposely included) | |
---|
Audience | |
---|
Dependencies | |
---|
Simplicité | 5.0 2 notes |
---|
Enterprise Compliance | 4.5 2 notes |
---|
Minimum PHP Version | 5.4 |
---|
Basic Features | |
---|
PDO Support | Oui |
---|
Transparent support for NoSQL | Oui Avialable cross sql and nosql datababase relations (https://github.com/yiisoft/yii2-mongodb) |
---|
How to invoke db-vendor-specific extensions? | Oui SQL - Query Builder. |
---|
Array as a persistence | Oui 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 Mapping | Oui Using static method of active record. http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#declaring-ar-classes |
---|
Field Name Mapping | Oui |
---|
Map Entity to SubQuery | - table = new Expression(..) |
---|
Map property to expression | - (couldn't find docs) |
---|
Map native types (DateTime) | Oui Active record behaviors |
---|
User-defined types (e.g. "23 USD") | Oui Active record behaviors |
---|
Map field of related Entity ('currency' = currency_id->Model Currency.name) | Oui $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) | Non No native support. |
---|
Criteria, Scope, Conditions (Model will refuse to work with records that does not match criteria) | |
---|
Support model-level criteria | Non |
---|
Soft-delete | Oui Events and behaviors |
---|
Domain Model Criteria | Non Only for specific query: User::find()->byEmail('...')->active()->one() |
---|
Expression-based condition | Non Only for query: User::find()->andWhere('...')->all() |
---|
Criteria Compliance (new record must match condition) | Non |
---|
Dynamic criteria | Non 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 Object | Oui \yii\db\ActiveRecord::find() |
---|
Raw expression | Oui new \yii\db\Expression('...') |
---|
Nested/Composite Queries/Expressions | Oui Expression can be in any part of query |
---|
Reference domain-model field in query | Non Field is class property. |
---|
field, where, order, limit | Oui \yii\db\ActiveQuery |
---|
options, rollup, partition | |
---|
UPDATE, DELETE, INSERT query building | Oui |
---|
REPLACE, TRUNCATE | - Throught raw sql in \yii\db\Command |
---|
SHOW, DESCRIBE, CALL | - Throught raw sql in \yii\db\Command |
---|
ALTER, CREATE query building | Oui |
---|
User-defined query template | Oui (please link doc) |
---|
full support for OR conditions | - |
---|
Use Domain logic in multi-record update | Non |
---|
Data Fetching (different ways to retrieve data from database) | |
---|
Get All Data (2x array) | Oui \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 row | Oui \yii\db\Query::one() |
---|
Single Value | Oui \yii\db\Query::scalar() |
---|
Single Column | Oui \yii\db\Query::column() |
---|
Iterator | Oui |
---|
Bypass persistence mapping | |
---|
Loading and Saving individual records | |
---|
Load by ID | Oui User::findOne(1) |
---|
Load by other field | Oui User::findOne(['id' => 1]) |
---|
Read-only Models | |
---|
Model without primary key | |
---|
Specify fields to load | Oui User::find()->select([])->one() |
---|
Save only sends dirty fields | Oui |
---|
Guarded / Fillable properties | |
---|
Object Hierarchy Model | |
---|
Admin extends User, adds criteria (is_admin=1) | Non Can be done as wrapper: User::findAdmin(..) or custom CDbCriteria |
---|
Admin extends User, adds accessible fields | Non |
---|
Extend model, add Join (Disjoined SubTypes) | Non |
---|
Extend model change table | |
---|
Relations/References (One model can relate to another model. NOT A TABLE JOIN) | |
---|
Model can define relation to other Model | Oui Relations |
---|
One-to-Many | Oui |
---|
One-to-many traversal strategy | Uses classical eager/lazy loading approach. with() can help
pre-fetch the data for related entities. |
---|
Lazy/Eager-loading | Oui |
---|
One-to-One | Oui |
---|
Many-to-Many | Oui 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 operation | Oui |
---|
Override standard C,R,U,D operations | Oui |
---|
Persistence-specific hooks (to modify Query) | - (no docs) |
---|
User-defined hooks | Oui |
---|
Auditing | |
---|
Global Auditing | |
---|
Store old/new field values | Oui |
---|
Revert action (undo) and replay (redo) | Non |
---|
Reactive actions | |
---|
Store log in any persistence | Non |
---|
Override, Add fields to audit log | |
---|
Custom events | Oui |
---|
Access to record-specific history | - Through a custom query. |
---|
Date of creation, modification | Oui \yii\behaviors\TimestampBehavior |
---|
User/IP creation, modification | Oui \yii\behaviors\BlameableBehavior |
---|
Store incremental revisions | |
---|
Integration | |
---|
Field meta-information provided | |
---|
UI extensions | Non |
---|
API extensions | |
---|
J'aime | 0 J'aime |
---|
Plus de comparatifs
Commentaires
Laisser un commentaire
S'inscrire Se connecter