PHPackages                             damidevelopment/yii2-db-procedures - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. damidevelopment/yii2-db-procedures

ActiveYii2-extension[Database &amp; ORM](/categories/database)

damidevelopment/yii2-db-procedures
==================================

Extension containing models for work with procedures/views in database

v1.4.2(5y ago)044MITPHPPHP &gt;=7.2

Since Jun 25Pushed 5y ago1 watchersCompare

[ Source](https://github.com/damidevelopment/yii2-db-procedures)[ Packagist](https://packagist.org/packages/damidevelopment/yii2-db-procedures)[ RSS](/packages/damidevelopment-yii2-db-procedures/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (1)Versions (19)Used By (0)

Yii2 Database procedure extension
=================================

[](#yii2-database-procedure-extension)

This extension provides layer for working with database procedures/views in Yii2 application.

It is created to work well with Yii2 applications, but with right configuration it could be used with other frameworks too.

### REQUIREMENTS

[](#requirements)

The minimum requirement by this project:

- PHP 7.2.0.

### Procedures

[](#procedures)

In Application every procedure have its own model. Procedure model must implement interface `damidev\dbprocedures\models\IProcedure`. For easier work with procedures, we created abstract class `damidev\dbprocedures\models\Procedure`. This class implements `IProcedure`, calls events, defines scenarios.

Every procedure model must define `Procedure::call()` and at least call method `Procedure::execute()`. Its becouse procedures returns single or many objects, this information know only programmer.

So for single result procedure we implement `damidev\dbprocedures\models\SimpleProcedure`. For multiple rows we implement `damidev\dbprocedures\models\MultiProcedure`. There is `damidev\dbprocedures\models\PagnatedProcedure` that provides pagination logic on `MultiProcedure`.

#### Procedure lifecycle

[](#procedure-lifecycle)

When `Procedure::call()` is invoked

```
-> call()
-> call execute(queryOne|queryAll)
    -> set scenario to Procedure::PROCEDURE_CALL
    -> call event beforeCall()               -- used to modify (or validate) input attributes
    -> db procedure exec
    -> set scenario to previous one
    -> call event afterCall($result)         -- used to modify procedure result
 callCount()
    -> set scenario to Procedure::PROCEDURE_COUNT
    -> db count procedure exec
    -> set scenario to previous one
