PHPackages                             voku/idiorm - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. voku/idiorm

Abandoned → [j4mie/idiorm](/?search=j4mie%2Fidiorm)Library[Database &amp; ORM](/categories/database)

voku/idiorm
===========

A lightweight nearly-zero-configuration object-relational mapper and fluent query builder for PHP5

v2.1.7(9y ago)77.7k3[1 PRs](https://github.com/voku/idiorm/pulls)1BSD-2-ClausePHPPHP &gt;=5.3.0

Since Nov 14Pushed 1y ago4 watchersCompare

[ Source](https://github.com/voku/idiorm)[ Packagist](https://packagist.org/packages/voku/idiorm)[ Docs](http://j4mie.github.com/idiormandparis)[ RSS](/packages/voku-idiorm/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (1)Versions (23)Used By (1)

Idiorm
======

[](#idiorm)

[![Build Status](https://camo.githubusercontent.com/27b67e3065183313bcf0ba18f9b3e4ef638b6b1ce785e85e72cef564f6ddcf7d/68747470733a2f2f6170692e7472617669732d63692e6f72672f766f6b752f6964696f726d2e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/voku/idiorm)[![Coverage Status](https://camo.githubusercontent.com/528dc0beef5e48808018e1482c867113f603bd1dc1620a0a3c8d6d4b826dfbf1/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f766f6b752f6964696f726d2f62616467652e7376673f6272616e63683d6d617374657226736572766963653d676974687562)](https://coveralls.io/github/voku/idiorm?branch=master)[![codecov.io](https://camo.githubusercontent.com/ec2c7769b74fc1452aba9c38f46c83fa1476fa807a971dce3a373fcf2d869b7d/68747470733a2f2f636f6465636f762e696f2f6769746875622f766f6b752f6964696f726d2f636f7665726167652e7376673f6272616e63683d6d6173746572)](https://codecov.io/github/voku/idiorm?branch=master)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/eaa755cf100e4958e70ce8ce2342387a384ddbbe16d597d00f70c8d4b9f664a2/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f766f6b752f6964696f726d2f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/voku/idiorm/?branch=master)[![Codacy Badge](https://camo.githubusercontent.com/a86a06ed34cb294f55d34165d76bcf9e0456fa5975f7dd284613f4713e201ebc/68747470733a2f2f6170692e636f646163792e636f6d2f70726f6a6563742f62616467652f67726164652f3363366138303361643633633432386338373932343136303661663237323661)](https://www.codacy.com/app/voku/idiorm)[![SensioLabsInsight](https://camo.githubusercontent.com/54e016ad2a9cd0893ca5ee15a1b21b49b0296cef903f0b98ccac2320cf0906c6/68747470733a2f2f696e73696768742e73656e73696f6c6162732e636f6d2f70726f6a656374732f64356631643033352d646637372d346633362d383662622d6433313863363433353235642f6d696e692e706e67)](https://insight.sensiolabs.com/projects/d5f1d035-df77-4f36-86bb-d318c643525d)[![Latest Stable Version](https://camo.githubusercontent.com/130e7fc9cb8c3829517841b34c8faa785ac4cd3dbacfaebe77d1074c79d79945/68747470733a2f2f706f7365722e707567782e6f72672f766f6b752f6964696f726d2f762f737461626c65)](https://packagist.org/packages/voku/idiorm)[![Total Downloads](https://camo.githubusercontent.com/8af8eab38f54a7a43250db57384fbb9c62f20c8a5ff83757112012462e58ed49/68747470733a2f2f706f7365722e707567782e6f72672f766f6b752f6964696f726d2f646f776e6c6f616473)](https://packagist.org/packages/voku/idiorm)[![Latest Unstable Version](https://camo.githubusercontent.com/1be12abbfdcb5e222c8f0535215c1f13566f78f934e56188c82634277ffeb2e7/68747470733a2f2f706f7365722e707567782e6f72672f766f6b752f6964696f726d2f762f756e737461626c65)](https://packagist.org/packages/voku/idiorm)[![PHP 7 ready](https://camo.githubusercontent.com/114c110ff391edbdfeb6e12b07c6f0f3357e5c33a34dc9c3d54e6d75c168189d/687474703a2f2f7068703772656164792e74696d6573706c696e7465722e63682f766f6b752f6964696f726d2f62616467652e737667)](https://travis-ci.org/voku/idiorm)[![License](https://camo.githubusercontent.com/4e922d55830f5411569dc22be6bd2cfcaab031f086b3e3381942ade0accd0827/68747470733a2f2f706f7365722e707567782e6f72672f766f6b752f6964696f726d2f6c6963656e7365)](https://packagist.org/packages/voku/idiorm)

WARNING: this is only a Maintained-Fork of ""

---

A lightweight nearly-zero-configuration object-relational mapper and fluent query builder for PHP5.

Tested on PHP 5.3+ - may work on earlier versions with PDO and the correct database drivers.

Released under a [BSD license](http://en.wikipedia.org/wiki/BSD_licenses).

**See Also: [Paris](http://github.com/voku/paris), an Active Record implementation built on top of Idiorm.**

Features
--------

[](#features)

- Makes simple queries and simple CRUD operations completely painless.
- Gets out of the way when more complex SQL is required.
- Built on top of [PDO](http://php.net/pdo).
- Uses [prepared statements](http://uk.php.net/manual/en/pdo.prepared-statements.php) throughout to protect against [SQL injection](http://en.wikipedia.org/wiki/SQL_injection) attacks.
- Requires no model classes, no XML configuration and no code generation: works out of the box, given only a connection string.
- Consists of one main class called `ORM`. Additional classes are prefixed with `Idiorm`. Minimal global namespace pollution.
- Database agnostic. Currently supports SQLite, MySQL, Firebird and PostgreSQL. May support others, please give it a try!
- Supports collections of models with method chaining to filter or apply actions to multiple results at once.
- Multiple connections supported
- PSR-1 compliant methods (any method can be called in camelCase instead of underscores eg. `find_many()` becomes `findMany()`) - you'll need PHP 5.3+

Documentation
-------------

[](#documentation)

The documentation is hosted on Read the Docs: [idiorm.rtfd.org](http://idiorm.rtfd.org)

### Building the Docs

[](#building-the-docs)

You will need to install [Sphinx](http://sphinx-doc.org/) and then in the docs folder run:

```
make html

```

The documentation will now be in docs/\_build/html/index.html

Let's See Some Code
-------------------

[](#lets-see-some-code)

```
$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;
}
```

Changelog
---------

[](#changelog)

- fixed ORM::\_\_callStatic()

#### 2.1.0 - released 2015-12-03

[](#210---released-2015-12-03)

- fixed for ORM-&gt;is\_dirty() \[[tentwofour](https://github.com/tentwofour)\] - [pr #268](https://github.com/j4mie/idiorm/pull/268)
- fixed ORM-&gt;is\_new() \[[nicolas-brousse](https://github.com/nicolas-brousse)\] - [pr #249](https://github.com/j4mie/idiorm/pull/249)
- fixed autoincremented compound keys inserts \[[lrlopez](https://github.com/lrlopez)\] - [pr #235](https://github.com/j4mie/idiorm/pull/235)
- added "ORM-&gt;reset\_order\_by()" \[[nicolas-brousse](https://github.com/nicolas-brousse)\] - [+](https://github.com/nicolas-brousse/idiorm/commit/89e56051200accbfc430c1ec0c6c1c37a1a85c6f)
- use static keywords instead of self \[[maboiteaspam](https://github.com/maboiteaspam)\] - [+](https://github.com/maboiteaspam/idiorm/commit/0aa9f4f1c16d22f39cc18a2d68461805e3b3d944)
- use type-casting for limit and offset

#### 2.0.0 - released 2015-12-02

[](#200---released-2015-12-02)

- added PSR-4 autoloader
- added phpdocs
- fixed missing variable in ORM::having\_id\_is()

#### 1.5.1 - released 2014-06-23

[](#151---released-2014-06-23)

- Binding of named parameters was broken \[[cainmi](https://github.com/cainmi)\] - [issue #221](https://github.com/j4mie/idiorm/pull/221)

#### 1.5.0 - released 2014-06-22

[](#150---released-2014-06-22)

- Multiple OR'ed conditions support \[[lrlopez](https://github.com/lrlopez)\] - [issue #201](https://github.com/j4mie/idiorm/issues/201)
- `where_id_in()` for selecting multiple records by primary key \[[lrlopez](https://github.com/lrlopez)\] - [issue #202](https://github.com/j4mie/idiorm/issues/202)
- Add compound primary key support \[[lrlopez](https://github.com/lrlopez)\] - [issue #171](https://github.com/j4mie/idiorm/issues/171)
- Add a RAW JOIN source to the query \[[moiseevigor](https://github.com/moiseevigor)\] - [issue #163](https://github.com/j4mie/idiorm/issues/163)
- offsetExists() should return true for null values, resolves [\#181](https://github.com/j4mie/idiorm/issues/181) \[[cainmi](https://github.com/cainmi)\] - [issue #214](https://github.com/j4mie/idiorm/pull/214)
- Custom cache callback functions \[[peter-mw](https://github.com/peter-mw)\] - [issue #216](https://github.com/j4mie/idiorm/pull/216)
- Restrict null primary keys on update/delete, resolves [\#203](https://github.com/j4mie/idiorm/issues/203) \[[cainmi](https://github.com/cainmi)\] - [issue #205](https://github.com/j4mie/idiorm/issues/205)
- Ensure parameters treated by type correctly \[[charsleysa](https://github.com/charsleysa)\] &amp; \[[SneakyBobito](https://github.com/SneakyBobito)\] - [issue #206](https://github.com/j4mie/idiorm/issues/206) &amp; [issue #208](https://github.com/j4mie/idiorm/issues/208)
- Reduce the type casting on aggregate functions to allow characters \[[herroffizier](https://github.com/herroffizier)\] - [issue #150](https://github.com/j4mie/idiorm/issues/150)
- Prevent invalid method calls from triggering infinite recursion \[[michaelward82](https://github.com/michaelward82)\] - [issue #152](https://github.com/j4mie/idiorm/issues/152)
- Add time to query logging - adds query time parameter to external logger callback function \[[AgelxNash](https://github.com/AgelxNash)\] - [issue #180](https://github.com/j4mie/idiorm/issues/180)
- Changed database array access to ensure it's always properly setup \[[falmp](https://github.com/falmp)\] - [issue #159](https://github.com/j4mie/idiorm/issues/159)
- Allow unsetting the db (`ORM::set_db(null)`) to make the test work again \[[borrel](https://github.com/borrel)\] - [issue #160](https://github.com/j4mie/idiorm/issues/160)
- Correct [issue #176](https://github.com/j4mie/idiorm/issues/176): Ensure database setup before building select \[[kendru](https://github.com/kendru)\] - [issue #197](https://github.com/j4mie/idiorm/issues/197)
- Add HHVM to travis-ci build matrix \[[ptarjan](https://github.com/ptarjan)\] - [issue #168](https://github.com/j4mie/idiorm/issues/168)
- Improve where statement precendence documentation \[[thomasahle](https://github.com/thomasahle)\] - [issue #190](https://github.com/j4mie/idiorm/issues/190)
- Improve testing checks \[[charsleysa](https://github.com/charsleysa)\] - [issue #173](https://github.com/j4mie/idiorm/issues/173)

#### 1.4.1 - release 2013-12-12

[](#141---release-2013-12-12)

**Patch update to remove a broken pull request** - may have consequences for users of 1.4.0 that exploited the "`find_many()` now returns an associative array with the databases primary ID as the array keys" change that was merged in 1.4.0.

- Back out pull request/issue [\#133](https://github.com/j4mie/idiorm/pull/133) as it breaks backwards compatibility in previously unexpected ways (see [\#162](https://github.com/j4mie/idiorm/pull/162), [\#156](https://github.com/j4mie/idiorm/issues/156) and [\#133](https://github.com/j4mie/idiorm/pull/133#issuecomment-29063108)) - sorry for merging this change into Idiorm - closes [issue 156](https://github.com/j4mie/idiorm/issues/156)

#### 1.4.0 - release 2013-09-05

[](#140---release-2013-09-05)

- `find_many()` now returns an associative array with the databases primary ID as the array keys \[[Surt](https://github.com/Surt)\] - [issue #133](https://github.com/j4mie/idiorm/issues/133)
- Calls to `set()` and `set_expr()` return `$this` allowing them to be chained \[[Surt](https://github.com/Surt)\]
- Add PSR-1 compliant camelCase method calls to Idiorm (PHP 5.3+ required) \[[crhayes](https://github.com/crhayes)\] - [issue #108](https://github.com/j4mie/idiorm/issues/108)
- Add static method `get_config()` to access current configuration \[[javierd](https://github.com/mikejestes)\] - [issue #141](https://github.com/j4mie/idiorm/issues/141)
- Add logging callback functionality \[[lalop](https://github.com/lalop)\] - [issue #130](https://github.com/j4mie/idiorm/issues/130)
- Add support for MS SQL `TOP` limit style (automatically used for PDO drivers: sqlsrv, dblib and mssql) \[[numkem](https://github.com/numkem)\] - [issue #116](https://github.com/j4mie/idiorm/issues/116)
- Uses table aliases in `WHERE` clauses \[[vicvicvic](https://github.com/vicvicvic)\] - [issue #140](https://github.com/j4mie/idiorm/issues/140)
- Ignore result columns when calling an aggregate function \[[tassoevan](https://github.com/tassoevan)\] - [issue #120](https://github.com/j4mie/idiorm/issues/120)
- Improve documentation \[[bruston](https://github.com/bruston)\] - [issue #111](https://github.com/j4mie/idiorm/issues/111)
- Improve PHPDoc on `get_db()` \[[mailopl](https://github.com/mailopl)\] - [issue #106](https://github.com/j4mie/idiorm/issues/106)
- Improve documentation \[[sjparsons](https://github.com/sjparsons)\] - [issue #103](https://github.com/j4mie/idiorm/issues/103)
- Make tests/bootstrap.php HHVM compatible \[[JoelMarcey](https://github.com/JoelMarcey)\] - [issue #143](https://github.com/j4mie/idiorm/issues/143)
- Fix docblock \[[ulrikjohansson](https://github.com/ulrikjohansson)\] - [issue #147](https://github.com/j4mie/idiorm/issues/147)
- Fix incorrect variable name in querying documentation \[[fridde](https://github.com/fridde)\] - [issue #146](https://github.com/j4mie/idiorm/issues/146)

#### 1.3.0 - release 2013-01-31

[](#130---release-2013-01-31)

- Documentation moved to [idiorm.rtfd.org](http://idiorm.rtfd.org) and now built using [Sphinx](http://sphinx-doc.org/)
- Add support for multiple database connections - closes [issue #15](https://github.com/j4mie/idiorm/issues/15) \[[tag](https://github.com/tag)\]
- Add in raw\_execute - closes [issue #40](https://github.com/j4mie/idiorm/issues/40) \[[tag](https://github.com/tag)\]
- Add `get_last_statement()` - closes [issue #84](https://github.com/j4mie/idiorm/issues/84) \[[tag](https://github.com/tag)\]
- Add HAVING clause functionality - closes [issue #50](https://github.com/j4mie/idiorm/issues/50)
- Add `is_new` method - closes [issue #85](https://github.com/j4mie/idiorm/issues/85)
- Add `ArrayAccess` support to the model instances allowing property access via `$model['field']` as well as `$model->field` - [issue #51](https://github.com/j4mie/idiorm/issues/51)
- Add a result set object for collections of models that can support method chains to filter or apply actions to multiple results at once - issue [\#51](https://github.com/j4mie/idiorm/issues/51) and [\#22](https://github.com/j4mie/idiorm/issues/22)
- Add support for [Firebird](http://www.firebirdsql.org) with `ROWS` and `TO` result set limiting and identifier quoting \[[mapner](https://github.com/mapner)\] - [issue #98](https://github.com/j4mie/idiorm/issues/98)
- Fix last insert ID for PostgreSQL using RETURNING - closes issues [\#62](https://github.com/j4mie/idiorm/issues/62) and [\#89](https://github.com/j4mie/idiorm/issues/89) \[[laacz](https://github.com/laacz)\]
- Reset Idiorm after performing a query to allow for calling `count()` and then `find_many()` \[[fayland](https://github.com/fayland)\] - [issue #97](https://github.com/j4mie/idiorm/issues/97)
- Change Composer to use a classmap so that autoloading is better supported \[[javierd](https://github.com/javiervd)\] - [issue #96](https://github.com/j4mie/idiorm/issues/96)
- Add query logging to `delete_many` \[[tag](https://github.com/tag)\]
- Fix when using `set_expr` alone it doesn't trigger query creation - closes [issue #90](https://github.com/j4mie/idiorm/issues/90)
- Escape quote symbols in "\_quote\_identifier\_part" - close [issue #74](https://github.com/j4mie/idiorm/issues/74)
- Fix issue with aggregate functions always returning `int` when is `float` sometimes required - closes [issue #92](https://github.com/j4mie/idiorm/issues/92)
- Move testing into PHPUnit to unify method testing and query generation testing

#### 1.2.3 - release 2012-11-28

[](#123---release-2012-11-28)

- Fix [issue #78](https://github.com/j4mie/idiorm/issues/78) - remove use of PHP 5.3 static call

#### 1.2.2 - release 2012-11-15

[](#122---release-2012-11-15)

- Fix bug where input parameters were sent as part-indexed, part associative

#### 1.2.1 - release 2012-11-15

[](#121---release-2012-11-15)

- Fix minor bug caused by IdiormStringException not extending Exception

#### 1.2.0 - release 2012-11-14

[](#120---release-2012-11-14)

- Setup composer for installation via packagist (j4mie/idiorm)
- Add `order_by_expr` method \[[sandermarechal](http://github.com/sandermarechal)\]
- Add support for raw queries without parameters argument \[[sandermarechal](http://github.com/sandermarechal)\]
- Add support to set multiple properties at once by passing an associative array to `set` method \[[sandermarechal](http://github.com/sandermarechal)\]
- Allow an associative array to be passed to `configure` method \[[jordanlev](http://github.com/jordanlev)\]
- Patch to allow empty Paris models to be saved (\[[j4mie/paris](http://github.com/j4mie/paris)\]) - [issue #58](https://github.com/j4mie/idiorm/issues/58)
- Add `select_many` and `select_many_expr` - closing issues [\#49](https://github.com/j4mie/idiorm/issues/49) and [\#69](https://github.com/j4mie/idiorm/issues/69)
- Add support for `MIN`, `AVG`, `MAX` and `SUM` - closes [issue #16](https://github.com/j4mie/idiorm/issues/16)
- Add `group_by_expr` - closes [issue #24](https://github.com/j4mie/idiorm/issues/24)
- Add `set_expr` to allow database expressions to be set as ORM properties - closes issues [\#59](https://github.com/j4mie/idiorm/issues/59) and [\#43](https://github.com/j4mie/idiorm/issues/43) \[[brianherbert](https://github.com/brianherbert)\]
- Prevent ambiguous column names when joining tables - [issue #66](https://github.com/j4mie/idiorm/issues/66) \[[hellogerard](https://github.com/hellogerard)\]
- Add `delete_many` method \[[CBeerta](https://github.com/CBeerta)\]
- Allow unsetting of ORM parameters \[[CBeerta](https://github.com/CBeerta)\]
- Add `find_array` to get the records as associative arrays \[[Surt](https://github.com/Surt)\] - closes [issue #17](https://github.com/j4mie/idiorm/issues/17)
- Fix bug in `_log_query` with `?` and `%` supplied in raw where statements etc. - closes [issue #57](https://github.com/j4mie/idiorm/issues/57) \[[ridgerunner](https://github.com/ridgerunner)\]

#### 1.1.1 - release 2011-01-30

[](#111---release-2011-01-30)

- Fix bug in quoting column wildcard. [j4mie/paris#12](https://github.com/j4mie/paris/issues/12)
- Small documentation improvements

#### 1.1.0 - released 2011-01-24

[](#110---released-2011-01-24)

- Add `is_dirty` method
- Add basic query caching
- Add `distinct` method
- Add `group_by` method

#### 1.0.0 - released 2010-12-01

[](#100---released-2010-12-01)

- Initial release

###  Health Score

39

—

LowBetter than 86% of packages

Maintenance27

Infrequent updates — may be unmaintained

Popularity26

Limited adoption so far

Community26

Small or concentrated contributor base

Maturity68

Established project with proven stability

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~83 days

Recently: every ~37 days

Total

19

Last Release

3430d ago

Major Versions

v1.5.1 → v2.0.02015-12-02

v1.5.2 → v2.1.62016-12-15

PHP version history (2 changes)v1.2.0PHP &gt;=5.2.0

v2.0.0PHP &gt;=5.3.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/6456fe693db197c458272cb758bf78958bc7d3e787ccd59db4bf3cf41654316a?d=identicon)[voku](/maintainers/voku)

---

Top Contributors

[![treffynnon](https://avatars.githubusercontent.com/u/65215?v=4)](https://github.com/treffynnon "treffynnon (158 commits)")[![j4mie](https://avatars.githubusercontent.com/u/6988?v=4)](https://github.com/j4mie "j4mie (145 commits)")[![voku](https://avatars.githubusercontent.com/u/264695?v=4)](https://github.com/voku "voku (31 commits)")[![charsleysa](https://avatars.githubusercontent.com/u/1219661?v=4)](https://github.com/charsleysa "charsleysa (15 commits)")[![lrlopez](https://avatars.githubusercontent.com/u/547387?v=4)](https://github.com/lrlopez "lrlopez (13 commits)")[![durhamhale](https://avatars.githubusercontent.com/u/621305?v=4)](https://github.com/durhamhale "durhamhale (6 commits)")[![moiseevigor](https://avatars.githubusercontent.com/u/993491?v=4)](https://github.com/moiseevigor "moiseevigor (4 commits)")[![sandermarechal](https://avatars.githubusercontent.com/u/145240?v=4)](https://github.com/sandermarechal "sandermarechal (4 commits)")[![CBeerta](https://avatars.githubusercontent.com/u/746999?v=4)](https://github.com/CBeerta "CBeerta (3 commits)")[![limenet](https://avatars.githubusercontent.com/u/474329?v=4)](https://github.com/limenet "limenet (2 commits)")[![gsouf](https://avatars.githubusercontent.com/u/3215399?v=4)](https://github.com/gsouf "gsouf (2 commits)")[![m92o](https://avatars.githubusercontent.com/u/140899?v=4)](https://github.com/m92o "m92o (2 commits)")[![stellis](https://avatars.githubusercontent.com/u/2069140?v=4)](https://github.com/stellis "stellis (2 commits)")[![Surt](https://avatars.githubusercontent.com/u/48085?v=4)](https://github.com/Surt "Surt (2 commits)")[![falmp](https://avatars.githubusercontent.com/u/94873?v=4)](https://github.com/falmp "falmp (2 commits)")[![hellogerard](https://avatars.githubusercontent.com/u/200488?v=4)](https://github.com/hellogerard "hellogerard (2 commits)")[![peter-mw](https://avatars.githubusercontent.com/u/5698247?v=4)](https://github.com/peter-mw "peter-mw (1 commits)")[![ptarjan](https://avatars.githubusercontent.com/u/40143?v=4)](https://github.com/ptarjan "ptarjan (1 commits)")[![e3betht](https://avatars.githubusercontent.com/u/1811561?v=4)](https://github.com/e3betht "e3betht (1 commits)")[![scrutinizer-auto-fixer](https://avatars.githubusercontent.com/u/6253494?v=4)](https://github.com/scrutinizer-auto-fixer "scrutinizer-auto-fixer (1 commits)")

---

Tags

ormquery builderidiorm

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/voku-idiorm/health.svg)

```
[![Health](https://phpackages.com/badges/voku-idiorm/health.svg)](https://phpackages.com/packages/voku-idiorm)
```

###  Alternatives

[j4mie/idiorm

A lightweight nearly-zero-configuration object-relational mapper and fluent query builder for PHP5

2.0k1.5M29](/packages/j4mie-idiorm)[cycle/orm

PHP DataMapper ORM and Data Modelling Engine

1.3k835.4k64](/packages/cycle-orm)[nilportugues/sql-query-builder

An elegant lightweight and efficient SQL QueryInterface BuilderInterface supporting bindings and complicated query generation.

425239.4k6](/packages/nilportugues-sql-query-builder)[cycle/database

DBAL, schema introspection, migration and pagination

64690.9k31](/packages/cycle-database)[matchory/elasticsearch

The missing elasticsearch ORM for Laravel!

3059.0k](/packages/matchory-elasticsearch)[tommyknocker/pdo-database-class

Framework-agnostic PHP database library with unified API for MySQL, MariaDB, PostgreSQL, SQLite, MSSQL, and Oracle. Query Builder, caching, sharding, window functions, CTEs, JSON, migrations, ActiveRecord, CLI tools, AI-powered analysis. Zero external dependencies.

845.7k](/packages/tommyknocker-pdo-database-class)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
