mviniis/connection-database

数据库连接管理器和查询生成器

v1.0.0 2024-08-13 22:41 UTC

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;
  • 配置完成后,可以使用以下数据库操作方法(selectupdateinsertinsertSelectdelete);

      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();
  • 注意

    • DBEntity对象具有一些方法来检查操作的成功,并返回相应表的DTO对象;
    • 要访问查询的值,只需调用参数即可;
      • getSuccess: 返回操作的成功;
      • getMessageOperation: 如果操作失败,则返回错误消息;
      • getData: 如果操作成功,则返回类DTO的对象;
      • getAllData: 如果操作成功,则返回包含类DTO对象的数组;

方法文档

  • 主要方法的文档

DBExecute::class

负责执行数据库操作的类。

  • select

    • conditions: 查询条件
      • 接受的类型: SQLWhereGroup|SQLWhere
      • 必需的:
    • joins: 与其他表的连接数组
      • 接受的类型: SQLJoin[]
      • 必需的:
    • fields: 将在查询中返回的字段
      • 接受的类型: SQLFields[]
      • 必需的:
    • order: 返回数据的排序
      • 接受的类型: SQLOrder
      • 必需的:
    • limit: 返回数据的限制
      • 接受的类型: Integer
      • 必需的:
    • offset: 数据的分页
      • 接受的类型: Integer
      • 必需的:
  • delete

    • conditions: 删除条件
      • 接受的类型: SQLWhereGroup|SQLWhere
      • 必需的:
  • insert

    • fields: 将被填充的字段数组
      • 接受的类型: SQLFields[]
      • 必需的:
    • values: 将被填充的字段数组
      • 接受的类型: SQLFields[]
      • 必需的:
    • conditions: 数据插入条件
      • 接受的类型: SQLWhereGroup|SQLWhere
      • 必需的:
    • ignore: 在插入记录时添加IGNORE子句
      • 接受的类型: Boolean
      • 必需的:
  • insertSelect

    • obSqlSelect: 用于选择要插入的数据的查询
      • 接受的类型: SQLSelect
      • 必需的:
    • fields: 将被填充的字段数组
      • 接受的类型: SQLFields[]
      • 必需的:
    • ignore: 在插入记录时添加IGNORE子句
      • 接受的类型: Boolean
      • 必需的:
  • update

    • set: 将更新的字段
      • 接受的类型: SQLSet
      • 必需的:
    • 条件:数据更新的条件
      • 接受的类型: SQLWhereGroup|SQLWhere
      • 必需的:
    • joins: 与其他表的连接数组
      • 接受的类型: SQLJoin[]
      • 必需的:
    • 限制:数据限制
      • 接受的类型: Integer
      • 必需的: