mviniis / connection-database
数据库连接管理器和查询生成器
v1.0.0
2024-08-13 22:41 UTC
Requires
- php: ^8.0.2
- illuminate/http: v9.52.x
- symfony/dotenv: v6.0.0
This package is auto-updated.
Last update: 2024-09-13 22:57:41 UTC
README
数据库连接管理器,使用PHP的PDO。
入门指南
安装
composer require mviniis/connection-database
使用
-
定义常量
PATH_ENV_APP,以指定.env文件的位置; -
在其
.env文件中,定义以下变量DB_CONNECTION="mysql" DB_HOST="host" DB_PORT="3306" DB_DATABASE="database" DB_USERNAME="root" DB_PASSWORD="" DB_CHARSET="utf8" -
首先,需要实现一个表的DTO数据转换类;
use \Mviniis\ConnectionDatabase\DTO\DTO; class ProdutoDTO extends DTO { protected $id; protected $nome; protected $preco; protected $sku; public function getParametrosClasse(): array { return ['id', 'nome', 'preco', 'sku']; } public function getParametrosTabela(): array { return ['id', 'nome', 'preco', 'sku']; } }
-
为了执行操作,扩展
Mviniis\ConnectionDatabase\DB\DBExecute类,到一个表格操作类; -
为类配置以下数据
- table: 要处理的表名;
- modelData: 对应表的DTO类;
use \Mviniis\ConnectionDatabase\DB\DBExecute; class Produto extends DBExecute { protected string $table = 'produto'; protected string $modelData = ProdutoDTO::class; } $obProduto = new Produto;
-
配置完成后,可以使用以下数据库操作方法(
select、update、insert、insertSelect、delete);use Mviniis\ConnectionDatabase\SQL\Parts\SQLWhere; use Mviniis\ConnectionDatabase\SQL\Parts\SQLWhereGroup; $condicoes = new SQLWhereGroup('AND', [ new SQLWhere('id', '=', 1) ]); $obProduto->select($condicoes);
-
然后,只需使用以下方法之一来处理数据库请求
- fetchObject
- 返回:一个
DBEntity类型的对象;$obProduto->fetchObject()->nome;
- 返回:一个
- fetchAllObjects
- 返回:一个
DBEntity类型的对象;foreach($obProduto->fetchAllObjects() as $obDTOProduto) $obDTOProduto->nome;
- 返回:一个
- fetchColumn
- 返回:查询到的列数据;
$obProduto->fetchColumn();
- 返回:查询到的列数据;
- rowCount
- 返回:受操作影响的行数;
$obProduto->rowCount();
- 返回:受操作影响的行数;
- getLastInsertId
- 返回:返回数据插入操作的最后一个ID;
$obProduto->getLastInsertId();
- 返回:返回数据插入操作的最后一个ID;
- fetchObject
-
注意
DBEntity对象具有一些方法来检查操作的成功,并返回相应表的DTO对象;- 要访问查询的值,只需调用参数即可;
- getSuccess: 返回操作的成功;
- getMessageOperation: 如果操作失败,则返回错误消息;
- getData: 如果操作成功,则返回类DTO的对象;
- getAllData: 如果操作成功,则返回包含类DTO对象的数组;
方法文档
- 主要方法的文档
DBExecute::class
负责执行数据库操作的类。
-
select
- conditions: 查询条件
- 接受的类型: SQLWhereGroup|SQLWhere
- 必需的: 否
- joins: 与其他表的连接数组
- 接受的类型: SQLJoin[]
- 必需的: 否
- fields: 将在查询中返回的字段
- 接受的类型: SQLFields[]
- 必需的: 否
- order: 返回数据的排序
- 接受的类型: SQLOrder
- 必需的: 否
- limit: 返回数据的限制
- 接受的类型: Integer
- 必需的: 否
- offset: 数据的分页
- 接受的类型: Integer
- 必需的: 否
- conditions: 查询条件
-
delete
- conditions: 删除条件
- 接受的类型: SQLWhereGroup|SQLWhere
- 必需的: 否
- conditions: 删除条件
-
insert
- fields: 将被填充的字段数组
- 接受的类型: SQLFields[]
- 必需的: 否
- values: 将被填充的字段数组
- 接受的类型: SQLFields[]
- 必需的: 否
- conditions: 数据插入条件
- 接受的类型: SQLWhereGroup|SQLWhere
- 必需的: 否
- ignore: 在插入记录时添加IGNORE子句
- 接受的类型: Boolean
- 必需的: 否
- fields: 将被填充的字段数组
-
insertSelect
- obSqlSelect: 用于选择要插入的数据的查询
- 接受的类型: SQLSelect
- 必需的: 否
- fields: 将被填充的字段数组
- 接受的类型: SQLFields[]
- 必需的: 否
- ignore: 在插入记录时添加IGNORE子句
- 接受的类型: Boolean
- 必需的: 否
- obSqlSelect: 用于选择要插入的数据的查询
-
update
- set: 将更新的字段
- 接受的类型: SQLSet
- 必需的: 否
- 条件:数据更新的条件
- 接受的类型: SQLWhereGroup|SQLWhere
- 必需的: 否
- joins: 与其他表的连接数组
- 接受的类型: SQLJoin[]
- 必需的: 否
- 限制:数据限制
- 接受的类型: Integer
- 必需的: 否
- set: 将更新的字段