prepmock/idiorm

一个轻量级的接近零配置的PHP5对象关系映射器和流畅查询构建器

v1.0.0 2023-06-26 07:05 UTC

This package is auto-updated.

Last update: 2024-09-30 01:43:41 UTC


README

idiorm master branch Latest Stable Version Total Downloads Code Climate

https://j4mie.github.io/idiormandparis/

仅维护模式

从版本1.5.0开始,Idiorm和Paris被认为是功能完整的。虽然它们将继续通过错误修复进行维护,但从这一点开始将不会添加任何新功能。这意味着如果pull请求对API进行了破坏性更改或需要除了库的补丁版本升级之外的其他内容,则它将不会合并。

请勿提交功能请求或API破坏性更改,因为这些请求将被无礼地关闭。

我应该使用Idiorm/Paris吗?

如果你正在启动一个新项目

不建议你在新项目中使用Idiorm或Paris。

我建议你使用Eloquent数据库库,它是从Laravel中提取的,当Taylor编写它时基于Idiorm。这意味着那里有许多相同的思想,但它得到了更积极的维护,并且有更现代的代码风格。

如果你有基于Idiorm或Paris的现有项目

你可以继续使用这两个项目,因为它们将继续接收安全补丁和错误修复。重要的是要注意,如果它们需要的变化会破坏向后兼容性,那么未来的PHP版本可能不会得到支持。

在这种情况下,你可以使用另一个数据库库,如Laravel中的Eloquent(见上文的“如果你正在启动一个新项目”),或者你可以决定分叉Idiorm和/或Paris以对你的修改进行修补。

但是,为什么?

有关此项目的状态进一步信息,请参阅j4mie#360

一个轻量级的接近零配置的对象关系映射器和流畅查询构建器,适用于PHP5及以上。

在PHP 5.2.0+上进行了测试 - 可能可以在PDO和正确的数据库驱动程序上运行较早的版本。

BSD许可证下发布。

另请参阅:基于Idiorm构建的Paris,一个Active Record实现。

特性

  • 使简单的查询和简单的CRUD操作变得完全无痛苦。
  • 当需要更复杂的SQL时,会避开。
  • 基于PDO构建。
  • 在整个过程中使用预处理语句,以防止SQL注入攻击。
  • 无需模型类,无需XML配置和无需代码生成:只需提供一个连接字符串即可开箱即用。
  • 由一个名为ORM的主要类组成。其他类以Idiorm为前缀。最小化全局命名空间污染。
  • 数据库无关。目前支持SQLite、MySQL、Firebird和PostgreSQL。可能支持其他数据库,请尝试一下!
  • 支持具有方法链的模型集合,可以一次性过滤或应用操作到多个结果。
  • 支持多个连接
  • PSR-1合规方法(任何方法都可以用camelCase调用,而不是下划线,例如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)上进行测试,有一个 Docker 配置在 ./test/docker_for_php52 中 - 更多信息请参阅那里的 readme。

变更日志

1.5.8 - 发布于 2022-07-18

1.5.7 - 发布于 2020-04-29

1.5.6 - 发布于 2018-05-31

1.5.5 - 发布于 2018-01-05

  • 为使用 PHP 5.2 进行测试添加 Docker 配置(使用 PHPUnit 3.6.12,这是最后一个与 PHP 5.2 兼容的版本) [Treffynnon]

1.5.4 - 发布于 2018-01-04

1.5.3 - 发布于 2017-03-21

  • 记录 raw_execute() 方法,并在查询文档中添加对 get_db() 的注释 - [Treffynnon]

1.5.2 - 发布于 2016-12-14

1.5.1 - 发布于 2014-06-23

1.5.0 - 发布于 2014-06-22

1.4.1 - 发布于 2013-12-12

修复更新以移除一个损坏的拉取请求 - 可能会影响利用 1.4.0 中合并的 "find_many() 现在返回一个关联数组,其键为数据库主键" 更改的 1.4.0 用户。

  • 撤销拉取请求/问题 #133,因为它以前未预料到的方式破坏了向下兼容性(参见 #162#156#133)- 对将此更改合并到 Idiorm 深表歉意 - 关闭 问题 156

1.4.0 - 发布于 2013-09-05

1.3.0 - 发布于 2013-01-31

  • 文档已移动到 idiorm.rtfd.org,并现在使用 Sphinx 构建
  • 添加对多个数据库连接的支持 - 解决 问题 #15 [tag]
  • 添加原始执行功能 - 解决 问题 #40 [tag]
  • 添加 get_last_statement() - 解决 问题 #84 [tag]
  • 添加 HAVING 子句功能 - 解决 问题 #50
  • 添加 is_new 方法 - 解决 问题 #85
  • 将模型实例添加对 ArrayAccess 的支持,允许通过 $model['field'] 以及 $model->field 访问属性 - 问题 #51
  • 为模型集合添加一个结果集对象,支持方法链,可一次性过滤或对多个结果应用操作 - 问题 #51#22
  • 支持Firebird数据库,使用ROWSTO限制结果集,并添加标识符引号功能 [mapner] - 问题#98
  • 使用RETURNING修复PostgreSQL的最后插入ID - 解决问题#62#89 [laacz]
  • 在执行查询后重置Idiorm,以便调用count()然后调用find_many() [fayland] - 问题#97
  • 将Composer更改为使用classmap,以更好地支持自动加载 [javierd] - 问题#96
  • delete_many添加查询日志 [tag]
  • 修复仅使用set_expr时不会触发查询创建的问题 - 解决问题#90
  • 在"_quote_identifier_part"中转义引号符号 - 解决问题#74
  • 修复聚合函数总是返回int,而有时需要float的问题 - 解决问题#92
  • 将测试移入PHPUnit以统一方法测试和查询生成测试

1.2.3 - 发布于2012年11月28日

  • 修复问题#78 - 移除PHP 5.3静态调用

1.2.2 - 发布于2012年11月15日

  • 修复输入参数部分索引、部分关联的问题

1.2.1 - 发布于2012年11月15日

  • 修复由IdiormStringException未扩展Exception引起的微小错误

1.2.0 - 发布于2012年11月14日

  • 为通过packagist安装设置composer(j4mie/idiorm)
  • 添加order_by_expr方法 [sandermarechal]
  • 添加对无参数的原始查询的支持 [sandermarechal]
  • 添加通过向set方法传递关联数组来同时设置多个属性的支持 [sandermarechal]
  • 允许向configure方法传递关联数组 [jordanlev]
  • 允许空的Paris模型被保存 ([j4mie/paris]) - 问题#58
  • 添加select_manyselect_many_expr - 解决问题#49#69
  • 添加对MINAVGMAXSUM的支持 - 解决问题#16
  • 添加group_by_expr - 解决问题#24
  • 添加set_expr以允许将数据库表达式设置为ORM属性 - 解决问题#59#43 [brianherbert]
  • 防止连接表时出现模糊的列名 - 问题#66 [hellogerard]
  • 添加 delete_many 方法 [CBeerta]
  • 允许取消设置 ORM 参数 [CBeerta]
  • 添加 find_array 以获取记录为关联数组 [Surt] - 关闭 问题 #17
  • 修复在原始 where 语句等中提供 ?%_log_query 中的错误 - 关闭 问题 #57 [ridgerunner]

1.1.1 - 发布于 2011-01-30

  • 修复引号列通配符的错误。j4mie/paris#12
  • 小幅改进文档

1.1.0 - 发布于 2011-01-24

  • 添加 is_dirty 方法
  • 添加基本查询缓存
  • 添加 distinct 方法
  • 添加 group_by 方法

1.0.0 - 发布于 2010-12-01

  • 初始版本