scalpel / db
数据库访问组件
v1.0.0
2019-04-24 08:07 UTC
Requires
- php: >=5.6.0
- scalpel/core: *
Suggests
- lox/xhprof: *
This package is auto-updated.
Last update: 2024-09-25 07:54:40 UTC
README
- 导入数据访问层
安装
composer install scalpel/db
适配器
查询代理,查询 SQL 语句
## Profiler
Log and profiler all sql
驱动器
数据库连接,真实查询 SQL
## mysql\Mysql
Mysql driver
## mysql\ResultSet
Query select statement's result
SQL
创建 SQL 语句,依赖 sql\InterfaceQuoter
表
表的 CRUD 操作,
- 添加(模型 / id)
- 删除()
- 更新()
- 查找()
- 信息()
- 计数()
对象关系映射(ORM)
- 表初始化关系定义
- 在 ResultSet 中使用 call 插件机制动态为模型增加功能
- 在 Relation 对象中将方法注入 Model 对象
- 在哪一层实现,在 Table 层实现,未绑定模型的绑定 Model 对象
table与table的关联 配置: $conf['detail'] = array( 'type' => JRelations::HAS_ONE, 'table' => 'knowledge_cnt', 'forkey' => 'info_id', 'onUpdate' => [ field => ["content", "#id#", "url"], autoUpdate => 1 ], 'onSelect' => [ alongField => ['content'], // 直接注入到对象的prototype field => '*', mapName => 'knDetail', // deafult getDetail ] ); table 中定义 JRelations 判断插入关联, 判断删除关联, 判断更新关联 查询注入 hasOne的定义, getXxx() -> 未定义 -> 查询 $this->relations->get(this->id, Xxx关系) 返回是数组?对象?还是字段 hasMany的定义 todo... phalcon参考 $this->belongsTo('product_types_id', 'ProductTypes', 'id', array( 'reusable' => true )); 自己的id, 关联的对象, 对象的id, 配置参数
待办事项
- √ 增加读取分离,如何实现,置入 Adapter 或是 Driver_
- √ 查询缓存
- √ ORM 实现
- √ 应用层的分库分表
- 事务
已知问题
- 表必须要有 id 主键,没有 id,模型更新将不达预期,使用 model.setIdentifier(id) 设置