damidevelopment/yii2-db-procedures

包含用于数据库存储过程/视图操作的模型扩展

安装: 44

依赖: 0

建议者: 0

安全: 0

星星: 0

关注者: 2

分支: 0

开放问题: 0

类型:yii2-extension

v1.4.2 2020-06-19 12:24 UTC

This package is auto-updated.

Last update: 2024-09-19 21:36:59 UTC


README

此扩展为在Yii2应用程序中处理数据库存储过程/视图提供了一层。

它旨在与Yii2应用程序良好配合,但在适当的配置下,也可以用于其他框架。

需求

此项目的基本需求

  • PHP 7.2.0。

存储过程

在应用程序中,每个存储过程都有自己的模型。存储过程模型必须实现接口 damidev\dbprocedures\models\IProcedure。为了更容易地处理存储过程,我们创建了抽象类 damidev\dbprocedures\models\Procedure。此类实现了 IProcedure,调用事件,定义场景。

每个存储过程模型都必须定义 Procedure::call() 并至少调用方法 Procedure::execute()。因为存储过程返回单个或多个对象,只有程序员知道这些信息。

因此,对于单行结果存储过程,我们实现了 damidev\dbprocedures\models\SimpleProcedure。对于多行,我们实现了 damidev\dbprocedures\models\MultiProcedure。还有 damidev\dbprocedures\models\PagnatedProcedure,它为 MultiProcedure 提供分页逻辑。

存储过程生命周期

当调用 Procedure::call()

-> 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
<- $result

当调用 Procedure::callCount()

-> callCount()
    -> set scenario to Procedure::PROCEDURE_COUNT
    -> db count procedure exec
    -> set scenario to previous one
<- $count

存储过程操作

扩展提供了现成的独立操作,这使得创建REST API等变得更加容易。

damidev\dbprocedures\actions\SimpleProcedureAction 用于查看/详细信息操作和 damidev\dbprocedures\actions\PaginatedProcedureAction 用于索引/列表/分页操作。