2.11.13 Validation Failed Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
2.11.14 Behaviors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
2.11.15 Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
2.11.16 Independent Column Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
2.11.17 Operations over Resultsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
2.11.18 Record Snapshots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
2.11.19 Models Meta-Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
2.11.20 Pointing to a different schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
2.11.21 Setting multiple databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
2.11.22 Logging Low-Level SQL Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
2.11.23 Profiling SQL Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
2.11.24 Injecting services into Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
2.11.25 Disabling/Enabling Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
2.11.26 Stand-Alone component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
2.12 Phalcon Query Language (PHQL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
2.12.1 Usage Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
2.12.2 Creating PHQL Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
2.12.3 Selecting Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
2.12.4 Inserting Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
2.12.5 Updating Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
2.12.6 Deleting Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
2.12.7 Creating queries using the Query Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
2.12.8 Disabling Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
2.12.9 Escaping Reserved Words . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
2.12.10 PHQL Lifecycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
2.12.11 Using Raw SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
2.12.12 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
2.13 Caching in the ORM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
2.13.1 Caching Resultsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
2.13.2 Overriding find/findFirst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
2.13.3 Forcing Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
2.13.4 Caching PHQL Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
2.13.5 Reusable Related Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
2.13.6 Caching Related Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
2.13.7 Caching Related Records Recursively . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
2.13.8 Caching based on Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
2.13.9 Caching of PHQL planning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
2.14 ODM (Object-Document Mapper) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
2.14.1 Creating Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
2.14.2 Understanding Documents To Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
2.14.3 Models in Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
2.14.4 Setting a Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
2.14.5 Finding Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
2.14.6 Aggregations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
2.14.7 Creating Updating/Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
2.14.8 Deleting Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
2.14.9 Validation Failed Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
2.14.10 Implicit Ids vs. User Primary Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
2.14.11 Setting multiple databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
2.14.12 Injecting services into Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
2.15 Using Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
2.15.1 Integrating Views with Controllers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
2.15.2 Using Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
2.15.3 Using Partials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
iii