psycho-neon / idiorm
一个轻量级的、几乎零配置的对象关系映射器和PHP5的流畅查询构建器
v1.5.8
2021-06-23 17:22 UTC
Requires
- php: >=5.2.0
Requires (Dev)
- ext-pdo_sqlite: *
- phpunit/phpunit: ^4.8
README
http://j4mie.github.com/idiormandparis/
警告:这只是一个对 "https://github.com/j4mie/idiorm/" 的维护分支
特性/API完整
自1.5.0版本以来,Idiorm被认为特性完整。虽然它将继续通过错误修复进行维护,但从此以后将不再添加新功能。这意味着,如果拉取请求对API进行破坏性更改或需要库的其他版本号以外的更改,则不会合并。
请勿提交功能请求或API破坏性更改,因为这些更改将被无礼地关闭。
一个轻量级的、几乎零配置的对象关系映射器和PHP5及更高版本的流畅查询构建器。
在PHP 5.2.0+上测试 - 可能与PDO和正确的数据库驱动程序在早期版本上一起工作。
在BSD许可下发布。
另请参阅:基于Idiorm构建的Active Record实现Paris。
特性
- 使简单的查询和简单的CRUD操作变得完全无痛。
- 当需要更复杂的SQL时,它会退出。
- 基于PDO构建。
- 在整个过程中使用预定义语句,以防止SQL注入攻击。
- 不需要模型类、XML配置或代码生成:只需要一个连接字符串即可直接使用。
- 由一个名为
ORM
的主要类组成。其他类以Idiorm
为前缀。最小化全局命名空间污染。 - 数据库无关。目前支持SQLite、MySQL、Firebird和PostgreSQL。可能支持其他数据库,请尝试一下!
- 支持模型集合,支持方法链以一次过滤或应用多个结果的操作。
- 支持多个连接
- PSR-1兼容的方法(任何方法都可以用驼峰命名法而不是下划线来调用,例如
find_many()
变为findMany()
) - 您需要PHP 5.3+
文档
文档托管在Read the Docs上:idiorm.rtfd.org
构建文档
您需要安装Sphinx,然后在文档文件夹中运行
make html
现在,文档将位于docs/_build/html/index.html
让我们看看一些代码
$user = ORM::for_table('user') ->where_equal('username', 'j4mie') ->find_one(); $user->first_name = 'Jamie'; $user->save(); $tweets = ORM::for_table('tweet') ->select('tweet.*') ->join('user', array( 'user.id', '=', 'tweet.user_id' )) ->where_equal('user.username', 'j4mie') ->find_many(); foreach ($tweets as $tweet) { echo $tweet->text; }
测试
测试是用PHPUnit编写的,可以通过composer运行
composer test
为了在PHP 5.2上测试(Idiorm维护对PHP这个版本的兼容性),在./test/docker_for_php52
中有一个Docker配置 - 在那里查看readme以获取更多信息。
变更日志
1.5.7 - 发布于2020-04-29
- 在调用join()时修复参数顺序 [CatalinFrancu] - 问题 #357
1.5.6 - 发布于2018-05-31
- 在reset_db()中将
null
分配给self::$_db
,以确保PDO关闭连接 [bleakgadfly] - 问题 #338
1.5.5 - 发布于2018-01-05
- 为测试添加PHP 5.2的Docker配置(使用PHPUnit 3.6.12,这是与PHP 5.2兼容的最后一个版本)[Treffynnon]
1.5.4 - 发布于2018-01-04
- 当返回缓存结果时重置Idiorm状态[fayland(和Treffynnon)] - 问题#319
- 修复PHP 5.2+的travis构建(添加7.0和7.1)并记录对较新PHP版本的支持[Treffynnon]
- 为
selectMany()
修正PHPDoc注释[kawausokun] - 问题#325 - 将pdo_sqlite添加到composer require-dev依赖[qyanu] - 问题#328
1.5.3 - 发布于2017-03-21
- 在查询文档中记录
raw_execute()
方法并在get_db()
中添加注释 - [Treffynnon]
1.5.2 - 发布于2016-12-14
- 修复自动增长复合键插入问题[lrlopez] - 问题#233和拉取#235
- 为魔法方法添加@method标签[stellis] - 问题#237
- 确保当输入null或空字符串时,
is_dirty()
返回正确[tentwofour] - 问题#268 - 将Code Climate徽章添加到readme文件中[e3betht] - 问题#260
- 导航中的错别字[leongersen] - 问题#257
- 支持命名占位符日志记录和测试[m92o] - 问题#223
having_id_is()
引用未定义变量$value
[Treffynnon] - 问题#224- 文档修复 - ORM查询输出为
where_any_is()
[uovidiu] - 问题#306 - 代码样式修复,防止嵌套循环使用相同的变量名[mkkeck] - 问题#301
- 记录内置查询日志器的不足[Treffynnon] - 问题#307
- 将phpunit添加到dev依赖,添加
composer test
脚本快捷方式并修复测试引导中的PDO模拟[Treffynnon] - 针对多个原始WHERE子句的新测试 [Treffynnon] - 问题 #236
- 从travis-ci容器中移除PHP 5.2以进行测试(注意 Idiorm仍然支持PHP 5.2) [Treffynnon]
1.5.1 - 发布于2014-06-23
1.5.0 - 发布于2014-06-22
- 支持多个OR条件 [lrlopez] - 问题 #201
where_id_in()
通过主键选择多个记录 [lrlopez] - 问题 #202- 添加复合主键支持 [lrlopez] - 问题 #171
- 将RAW JOIN源添加到查询中 [moiseevigor] - 问题 #163
- offsetExists()应返回true对于null值,解决了#181 [cainmi] - 问题 #214
- 自定义缓存回调函数 [peter-mw] - 问题 #216
- 更新/删除时限制null主键,解决了#203 [cainmi] - 问题 #205
- 确保参数类型正确处理 [charsleysa] & [SneakyBobito] - 问题 #206 & 问题 #208
- 减少聚合函数上的类型转换以允许字符 [herroffizier] - 问题 #150
- 防止无效方法调用触发无限递归 [michaelward82] - 问题 #152
- 添加查询日志中的时间 - 向外部日志记录器回调函数添加查询时间参数 [AgelxNash] - 问题 #180
- 更改数据库数组访问以确保其始终正确设置 [falmp] - 问题 #159
- 允许取消设置数据库(
ORM::set_db(null)
)以使测试再次工作 [borrel] - 问题 #160 - 正确处理问题 #176:在构建 select 之前确保数据库设置[kendru] - 问题 #197
- 将 HHVM 添加到 travis-ci 构建矩阵中[ptarjan] - 问题 #168
- 改进 where 语句优先级文档[thomasahle] - 问题 #190
- 改进测试检查[charsleysa] - 问题 #173
1.4.1 - 发布于 2013-12-12
修复更新以移除一个损坏的拉取请求 - 可能会对利用 1.4.0 中合并的 "find_many()
现在返回一个以数据库主键为键的关联数组" 变更的 1.4.0 用户造成影响。
1.4.0 - 发布于 2013-09-05
find_many()
现在返回一个以数据库主键为键的关联数组 [Surt] - 问题 #133- 调用
set()
和set_expr()
返回$this
,允许它们进行链式调用 [Surt] - 向 Idiorm 添加符合 PSR-1 规范的 camelCase 方法调用(PHP 5.3+ 需要)[crhayes] - 问题 #108
- 添加静态方法
get_config()
以访问当前配置 [javierd] - 问题 #141 - 添加日志回调功能 [lalop] - 问题 #130
- 添加对 MS SQL
TOP
限制样式的支持(自动用于 PDO 驱动程序:sqlsrv、dblib 和 mssql)[numkem] - 问题 #116 - 在
WHERE
子句中使用表别名 [vicvicvic] - 问题 #140 - 调用聚合函数时忽略结果列 [tassoevan] - 问题 #120
- 改进文档 [bruston] - 问题 #111
- 改进
get_db()
的 PHPDoc [mailopl] - 问题 #106 - 改进文档 [sjparsons] - 问题 #103
- 使测试/bootstrap.php HHVM 兼容 [JoelMarcey] - 问题 #143
- 修复 docblock [ulrikjohansson] - 问题 #147
- 修复查询文档中错误的变量名 [fridde] - 问题 #146
1.3.0 - 发布于 2013-01-31
- 文档已迁移至 idiorm.rtfd.org 并现在使用 Sphinx 构建
- 添加对多个数据库连接的支持 - 解决 问题 #15 [标签]
- 添加 raw_execute - 解决 问题 #40 [标签]
- 添加
get_last_statement()
- 解决 问题 #84 [标签] - 添加 HAVING 子句功能 - 解决 问题 #50
- 添加
is_new
方法 - 解决 问题 #85 - 添加对
ArrayAccess
的支持,允许通过$model['field']
以及$model->field
访问属性 - 问题 #51 - 为模型集合添加结果集对象,支持方法链以一次过滤或应用多个结果 - 问题 #51 和 #22
- 添加对 Firebird 的支持,包括
ROWS
和TO
结果集限制和标识符引用 [mapner] - 问题 #98 - 使用 RETURNING 修复 PostgreSQL 的最后插入 ID - 解决问题 #62 和 #89 [laacz]
- 在执行查询后重置 Idiorm,以便调用
count()
然后调用find_many()
[fayland] - 问题 #97 - 将 Composer 更改为使用类映射,以更好地支持自动加载 [javierd] - 问题 #96
- 为
delete_many
添加查询日志 [标签] - 修复使用
set_expr
单独时不会触发查询创建的问题 - 解决 问题 #90 - 在 "_quote_identifier_part" 中转义引号符号 - 解决 问题 #74
- 修复聚合函数在需要
float
类型时总是返回int
的问题 - 解决 问题 #92 - 将测试迁移到 PHPUnit 以统一方法测试和查询生成测试
1.2.3 - 发布于 2012-11-28
- 修复问题 #78 - 移除对 PHP 5.3 静态调用的使用
1.2.2 - 发布于 2012-11-15
- 修复了输入参数以部分索引和部分关联方式发送的bug
1.2.1 - 发布于 2012-11-15
- 修复由 IdiormStringException 未扩展 Exception 导致的轻微bug
1.2.0 - 发布于 2012-11-14
- 为通过 Packagist 安装配置 composer (j4mie/idiorm)
- 添加
order_by_expr
方法 [sandermarechal] - 添加对不带参数的原始查询的支持 [sandermarechal]
- 添加对通过传递关联数组到
set
方法一次性设置多个属性的支持 [sandermarechal] - 允许将关联数组传递给
configure
方法 [jordanlev] - 允许空的 Paris 模型保存的补丁 ([j4mie/paris]) - 问题 #58
- 添加
select_many
和select_many_expr
- 关闭问题 #49 和 #69 - 添加对
MIN
、AVG
、MAX
和SUM
的支持 - 关闭问题 问题 #16 - 添加
group_by_expr
- 关闭问题 问题 #24 - 添加
set_expr
允许将数据库表达式设置为 ORM 属性 - 关闭问题 #59 和 #43 [brianherbert] - 在连接表时防止模糊的列名 - 问题 #66 [hellogerard]
- 添加
delete_many
方法 [CBeerta] - 允许取消设置 ORM 参数 [CBeerta]
- 添加
find_array
以获取记录为关联数组 [Surt] - 关闭问题 问题 #17 - 修复在
_log_query
中使用?
和%
提供的原始 where 语句等的bug - 关闭问题 问题 #57 [ridgerunner]
1.1.1 - 发布于 2011-01-30
- 修复引号中列通配符的bug。 j4mie/paris#12
- 小的文档改进
1.1.0 - 发布于 2011-01-24
- 添加
is_dirty
方法 - 添加基本的查询缓存
- 添加
distinct
方法 - 添加
group_by
方法
1.0.0 - 发布于 2010-12-01
- 初始发布