目录

数据库操作

优质
小牛编辑
121浏览
2023-12-01

数据库的操作是每个phpweb框架的核心功能,我们提供数据库数据库的标准调用模式为:

你可以执行严格模式,也就是左边的那条线,Controller->Service->Dao->Model->DB,也可以走简单模式 Controller->Model->DB。个人根据自己的需求,走标准麻烦些(几乎所有的机构和系统都是这样^_^), 但是扩展性会好些,但是使用简单模式开发效率就会高些,性能会好些,但是稳定性和扩展性会差些。

目前我们暂时实现了2种数据库驱动的数据模型: MySQLMongoDB 为了方便你后期可能会更换数据模型,我们封装的统一的CRUD语法,这样你更换数据模型的时候也不需要修改业务层的代码了。插入和更新操作,数据全部使用 key => value数组,查询的条件,分组方式,分页...也是全部使用 key => value数组。

当然有些地方也还是做了一些兼容,比如说查询字段你可以使用:

$model = Loader::model(UserDao::class);
$fields = "id, username, password";
$list = $model->getItems($condition, $fields);

也可以这样写:

$model = Loader::model(UserDao::class);
$fields = array("id" => 1, "username" => 1 , "password" => 1);
$list = $model->getItems($condition, $fields);

但是我们推荐大家使用第二种,因为有可能在后期添加 ElasticSearch 模型的时候会取消第一种的支持。

二次开发

模型是框架的核心部分,涉及到的类比较多,主要是 db 模块和 model 模块。下面大概介绍一下这些类:

herosphp\db

  • herosphp\db\interfaces\Idb : 数据库访问接口类
  • herosphp\db\interfaces\ICusterDB : 支持读写分离的数据库访问接口
  • herosphp\db\mysql\SingleDB : MySQL单数居库服务器操作的PDO实现
  • herosphp\db\mysql\ClusterDB : MySQL多服务器读写分离操作的PDO实现
  • herosphp\db\mysql\MysqlQueryBuilder : mysql查询语句处理工具,用来将通用api传入的查询条件转换成mysql的查询条件
  • herosphp\db\DBFactory : 数据库操作工厂类,创建数据库连接对象
  • herosphp\db\mongo\MongoDB : mongoDB数据库操作的实现
  • herosphp\db\mongo\MongoQueryBuilder : mongodb查询语句处理工具,用来将通用api传入的查询条件转换成mongodb的查询条件

herosphp\model

  • herosphp\model\MysqlModel : 数据库访问模型接口
  • herosphp\model\C_Model : 数据库访问模型model mysql实现
  • herosphp\model\MongoModel : 数据库访问模型model mongodb实现