<meta content="@github" name="twitter:site" /><meta content="summary" name="twitter:card" /><meta content="sfthurber/cim-xa" name="twitter:title" /><meta content="cim-xa - CIM-Accelerant [a.k.a. CIM-XA] is a distribution for the popular CodeIgniter framework, including zero-compilation object-oriented data layers [using PDO via Idiorm] and presentation layers [" name="twitter:description" /><meta content="https://2.gravatar.com/avatar/aea05369bbce1cc130861a0a99d54d74?d=https%3A%2F%2Fidenticons.github.com%2Fdefd95afafdd80ba89cbedf6986e8429.png&r=x&s=400" name="twitter:image:src" />
<meta name="hostname" content="github-fe139-cp1-prd.iad.github.net">
<meta name="ruby" content="ruby 2.1.0p0-github-tcmalloc (87d8860372) [x86_64-linux]">
<link rel="assets" href="https://github.global.ssl.fastly.net/">
<link rel="conduit-xhr" href="https://ghconduit.com:25035/">
<link rel="xhr-socket" href="/_sockets" />
<meta name="msapplication-TileImage" content="/windows-tile.png" />
<meta name="msapplication-TileColor" content="#ffffff" />
<meta name="selected-link" value="repo_source" data-pjax-transient />
<meta content="collector.githubapp.com" name="octolytics-host" /><meta content="collector-cdn.github.com" name="octolytics-script-host" /><meta content="github" name="octolytics-app-id" /><meta content="46AFE1D1:0718:63CBD7F:52F4F5F9" name="octolytics-dimension-request_id" /><meta content="2487479" name="octolytics-actor-id" /><meta content="sfthurber" name="octolytics-actor-login" /><meta content="7eeeba8f4df97f774adc19de17ba51a1b525206bbaf4de5b3059eed252f73a07" name="octolytics-actor-hash" />
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
<meta content="authenticity_token" name="csrf-param" />
<link href="https://github.global.ssl.fastly.net/assets/github-f75ad12241fc0d2d7c903870c877da49bf925f5b.css" media="all" rel="stylesheet" type="text/css" />
<link href="https://github.global.ssl.fastly.net/assets/github2-eedb06b089d2ef792059bc2ebee160f716fa7aab.css" media="all" rel="stylesheet" type="text/css" />
<script src="https://github.global.ssl.fastly.net/assets/frameworks-e8d62aa911c75d1d60662859d52c3cf1232675e6.js" type="text/javascript"></script>
<script async="async" defer="defer" src="https://github.global.ssl.fastly.net/assets/github-62b15e7c9c7aead7539d1a6b7523410cfd4d33a5.js" type="text/javascript"></script>
<meta http-equiv="x-pjax-version" content="59617e98acce9d59e36d799192b445af">
<link data-pjax-transient rel='permalink' href='/sfthurber/cim-xa/blob/44d425a23d897da285c48ade3e866a25c94dd4ae/idiorm/README.markdown'>
<div class="header header-logged-in true">
<a class="header-logo-invertocat" href="https://github.com/">
<a href="/notifications" class="notification-indicator tooltipped downwards" data-gotokey="n" title="You have no unread notifications">
<span class="mail-status all-read"></span>
<div class="command-bar js-command-bar in-repository">
<form accept-charset="UTF-8" action="/search" class="command-bar-form" id="top_search_form" method="get">
<input type="text" data-hotkey=" s" name="q" id="js-command-bar-field" placeholder="Search or type a command" tabindex="1" autocapitalize="off"
data-username="sfthurber"
data-repo="sfthurber/cim-xa"
data-branch="master"
data-sha="20f2c2884ac4f1360b0b92cec2a5902f373c725c"
<input type="hidden" name="nwo" value="sfthurber/cim-xa" />
<div class="select-menu js-menu-container js-select-menu search-context-select-menu">
<span class="minibutton select-menu-button js-menu-target">
<span class="js-select-button">This repository</span>
</span>
<div class="select-menu-modal-holder js-menu-content js-navigation-container">
<div class="select-menu-modal">
<div class="select-menu-item js-navigation-item js-this-repository-navigation-item selected">
<span class="select-menu-item-icon octicon octicon-check"></span>
<input type="radio" class="js-search-this-repository" name="search_target" value="repository" checked="checked" />
<div class="select-menu-item-text js-select-button-text">This repository</div>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item js-all-repositories-navigation-item">
<span class="select-menu-item-icon octicon octicon-check"></span>
<input type="radio" name="search_target" value="global" />
<div class="select-menu-item-text js-select-button-text">All repositories</div>
</div> <!-- /.select-menu-item -->
</div>
</div>
</div>
- sfthurber
<li class="new-menu dropdown-toggle js-menu-container">
<a href="#" class="js-menu-target tooltipped downwards" title="Create new..." aria-label="Create new...">
<span class="octicon octicon-plus"></span>
<span class="dropdown-arrow"></span>
</a>
<div class="js-menu-content">
</div>
</li>
<li>
<a href="/settings/profile" id="account_settings"
class="tooltipped downwards"
aria-label="Account settings "
title="Account settings ">
<span class="octicon octicon-tools"></span>
</a>
</li>
<li>
<a class="tooltipped downwards" href="/logout" data-method="post" id="logout" title="Sign out" aria-label="Sign out">
<span class="octicon octicon-log-out"></span>
</a>
</li>
- New repository
- New organization
<li class="section-title">
<span title="sfthurber/cim-xa">This repository</span>
</li>
<li>
<a href="/sfthurber/cim-xa/issues/new"><span class="octicon octicon-issue-opened"></span> New issue</a>
</li>
<li>
<a href="/sfthurber/cim-xa/settings/collaboration"><span class="octicon octicon-person-add"></span> New collaborator</a>
</li>
<div class="site" itemscope itemtype="http://schema.org/WebPage">
<div class="pagehead repohead instapaper_ignore readability-menu">
<div class="container">
-
Unstar
<a href="/sfthurber/cim-xa/star" class="minibutton with-count js-toggler-target star-button unstarred upwards" title="Star this repository" data-remote="true" data-method="post" rel="nofollow"> <span class="octicon octicon-star"></span><span class="text">Star</span> </a> <a class="social-count js-social-count" href="/sfthurber/cim-xa/stargazers"> 0 </a>
<li class="subscription">
<form accept-charset="UTF-8" action="/notifications/subscribe" class="js-social-container" data-autosubmit="true" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="PygUo0nq942bucPS6ZzwT5ho/f9KXjsb6QkXJBMDEh8=" /></div> <input id="repository_id" name="repository_id" type="hidden" value="16257868" />
<div class="select-menu js-menu-container js-select-menu">
<a class="social-count js-social-count" href="/sfthurber/cim-xa/watchers">
1
</a>
<span class="minibutton select-menu-button with-count js-menu-target" role="button" tabindex="0">
<span class="js-select-button">
<span class="octicon octicon-eye-unwatch"></span>
Unwatch
</span>
</span>
<div class="select-menu-modal-holder">
<div class="select-menu-modal subscription-menu-modal js-menu-content">
<div class="select-menu-header">
<span class="select-menu-title">Notification status</span>
<span class="octicon octicon-remove-close js-menu-close"></span>
</div> <!-- /.select-menu-header -->
<div class="select-menu-list js-navigation-container" role="menu">
<div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
<span class="select-menu-item-icon octicon octicon-check"></span>
<div class="select-menu-item-text">
<input id="do_included" name="do" type="radio" value="included" />
<h4>Not watching</h4>
<span class="description">You only receive notifications for conversations in which you participate or are @mentioned.</span>
<span class="js-select-button-text hidden-select-button-text">
<span class="octicon octicon-eye-watch"></span>
Watch
</span>
</div>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item selected" role="menuitem" tabindex="0">
<span class="select-menu-item-icon octicon octicon octicon-check"></span>
<div class="select-menu-item-text">
<input checked="checked" id="do_subscribed" name="do" type="radio" value="subscribed" />
<h4>Watching</h4>
<span class="description">You receive notifications for all conversations in this repository.</span>
<span class="js-select-button-text hidden-select-button-text">
<span class="octicon octicon-eye-unwatch"></span>
Unwatch
</span>
</div>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
<span class="select-menu-item-icon octicon octicon-check"></span>
<div class="select-menu-item-text">
<input id="do_ignore" name="do" type="radio" value="ignore" />
<h4>Ignoring</h4>
<span class="description">You do not receive any notifications for conversations in this repository.</span>
<span class="js-select-button-text hidden-select-button-text">
<span class="octicon octicon-mute"></span>
Stop ignoring
</span>
</div>
</div> <!-- /.select-menu-item -->
</div> <!-- /.select-menu-list -->
</div> <!-- /.select-menu-modal -->
</div> <!-- /.select-menu-modal-holder -->
</div> <!-- /.select-menu -->
<li>
<a href="/sfthurber/cim-xa/fork" class="minibutton with-count js-toggler-target fork-button lighter upwards" title="Fork this repo" rel="nofollow" data-method="post">
<span class="octicon octicon-git-branch-create"></span><span class="text">Fork</span>
</a>
<a href="/sfthurber/cim-xa/network" class="social-count">0</a>
</li>
<h1 itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="entry-title public">
<span class="repo-label"><span>public</span></span>
<span class="mega-octicon octicon-repo"></span>
<span class="author">
<a href="/sfthurber" class="url fn" itemprop="url" rel="author"><span itemprop="title">sfthurber</span></a>
</span>
<span class="repohead-name-divider">/</span>
<strong><a href="/sfthurber/cim-xa" class="js-current-repository js-repo-home-link">cim-xa</a></strong>
<span class="page-context-loader">
<img alt="Octocat-spinner-32" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</span>
</h1>
</div><!-- /.container -->
</div><!-- /.repohead -->
<div class="container">
<div class="repository-with-sidebar repo-container new-discussion-timeline js-new-discussion-timeline ">
<div class="repository-sidebar">
- Code
<li class="tooltipped leftwards" title="Issues">
<a href="/sfthurber/cim-xa/issues" aria-label="Issues" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-gotokey="i" data-selected-links="repo_issues /sfthurber/cim-xa/issues">
<span class="octicon octicon-issue-opened"></span> <span class="full-word">Issues</span>
<span class='counter'>0</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
<li class="tooltipped leftwards" title="Pull Requests">
<a href="/sfthurber/cim-xa/pulls" aria-label="Pull Requests" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-gotokey="p" data-selected-links="repo_pulls /sfthurber/cim-xa/pulls">
<span class="octicon octicon-git-pull-request"></span> <span class="full-word">Pull Requests</span>
<span class='counter'>0</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
<li class="tooltipped leftwards" title="Wiki">
<a href="/sfthurber/cim-xa/wiki" aria-label="Wiki" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="repo_wiki /sfthurber/cim-xa/wiki">
<span class="octicon octicon-book"></span> <span class="full-word">Wiki</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
<li class="tooltipped leftwards" title="Pulse">
<a href="/sfthurber/cim-xa/pulse" aria-label="Pulse" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="pulse /sfthurber/cim-xa/pulse">
<span class="octicon octicon-pulse"></span> <span class="full-word">Pulse</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
<li class="tooltipped leftwards" title="Graphs">
<a href="/sfthurber/cim-xa/graphs" aria-label="Graphs" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="repo_graphs repo_contributors /sfthurber/cim-xa/graphs">
<span class="octicon octicon-graph"></span> <span class="full-word">Graphs</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
<li class="tooltipped leftwards" title="Network">
<a href="/sfthurber/cim-xa/network" aria-label="Network" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-selected-links="repo_network /sfthurber/cim-xa/network">
<span class="octicon octicon-git-branch"></span> <span class="full-word">Network</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
<div class="sunken-menu-separator"></div>
<ul class="sunken-menu-group">
<li class="tooltipped leftwards" title="Settings">
<a href="/sfthurber/cim-xa/settings"
class="sunken-menu-item" data-pjax aria-label="Settings">
<span class="octicon octicon-tools"></span> <span class="full-word">Settings</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a>
</li>
</ul>
<div class="only-with-full-nav">
<span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="https://github.com/sfthurber/cim-xa.git" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
<span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="git@github.com:sfthurber/cim-xa.git" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
<span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="https://github.com/sfthurber/cim-xa" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
You can clone with HTTPS, SSH, or Subversion.
Clone in Desktop <a href="/sfthurber/cim-xa/archive/master.zip"
class="minibutton sidebar-button"
title="Download this repository as a zip file"
rel="nofollow">
<span class="octicon octicon-cloud-download"></span>
Download ZIP
</a>
</div>
</div><!-- /.repository-sidebar -->
<div id="js-repo-pjax-container" class="repository-content context-loader-container" data-pjax-container>
<div class="select-menu-modal">
<div class="select-menu-header">
<span class="select-menu-title">Switch branches/tags</span>
<span class="octicon octicon-remove-close js-menu-close"></span>
</div> <!-- /.select-menu-header -->
<div class="select-menu-filters">
<div class="select-menu-text-filter">
<input type="text" aria-label="Find or create a branch…" id="context-commitish-filter-field" class="js-filterable-field js-navigation-enable" placeholder="Find or create a branch…">
</div>
<div class="select-menu-tabs">
<ul>
<li class="select-menu-tab">
<a href="#" data-tab-filter="branches" class="js-select-menu-tab">Branches</a>
</li>
<li class="select-menu-tab">
<a href="#" data-tab-filter="tags" class="js-select-menu-tab">Tags</a>
</li>
</ul>
</div><!-- /.select-menu-tabs -->
</div><!-- /.select-menu-filters -->
<div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="branches">
<div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
<div class="select-menu-item js-navigation-item selected">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/sfthurber/cim-xa/blob/master/idiorm/README.markdown"
data-name="master"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="master">master</a>
</div> <!-- /.select-menu-item -->
</div>
<form accept-charset="UTF-8" action="/sfthurber/cim-xa/branches" class="js-create-branch select-menu-item select-menu-new-item-form js-navigation-item js-new-item-form" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="PygUo0nq942bucPS6ZzwT5ho/f9KXjsb6QkXJBMDEh8=" /></div>
<span class="octicon octicon-git-branch-create select-menu-item-icon"></span>
<div class="select-menu-item-text">
<h4>Create branch: <span class="js-new-item-name"></span></h4>
<span class="description">from ‘master’</span>
</div>
<input type="hidden" name="name" id="name" class="js-new-item-value">
<input type="hidden" name="branch" id="branch" value="master" />
<input type="hidden" name="path" id="path" value="idiorm/README.markdown" />
</form> <!-- /.select-menu-item -->
</div> <!-- /.select-menu-list -->
<div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="tags">
<div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/sfthurber/cim-xa/tree/1.11/idiorm/README.markdown"
data-name="1.11"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="1.11">1.11</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/sfthurber/cim-xa/tree/1.10/idiorm/README.markdown"
data-name="1.10"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="1.10">1.10</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/sfthurber/cim-xa/tree/1.06/idiorm/README.markdown"
data-name="1.06"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="1.06">1.06</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/sfthurber/cim-xa/tree/1.05/idiorm/README.markdown"
data-name="1.05"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="1.05">1.05</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/sfthurber/cim-xa/tree/1.04/idiorm/README.markdown"
data-name="1.04"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="1.04">1.04</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/sfthurber/cim-xa/tree/1.03/idiorm/README.markdown"
data-name="1.03"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="1.03">1.03</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/sfthurber/cim-xa/tree/1.02/idiorm/README.markdown"
data-name="1.02"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="1.02">1.02</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/sfthurber/cim-xa/tree/1.01/idiorm/README.markdown"
data-name="1.01"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="1.01">1.01</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/sfthurber/cim-xa/tree/1.0/idiorm/README.markdown"
data-name="1.0"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="1.0">1.0</a>
</div> <!-- /.select-menu-item -->
</div>
<div class="select-menu-no-results">Nothing to show</div>
</div> <!-- /.select-menu-list -->
</div> <!-- /.select-menu-modal -->
<div class="participation">
<p class="quickstat"><a href="#blob_contributors_box" rel="facebox"><strong>0</strong> contributors</a></p>
</div>
<div id="blob_contributors_box" style="display:none">
<h2 class="facebox-header">Users who have contributed to this file</h2>
<ul class="facebox-user-list">
</ul>
</div>
http://j4mie.github.com/idiormandparis/
Idiorm is now considered to be feature complete as of version 1.4.0. Whilst it will continue to be maintained with bug fixes there will be no further new features added.
A lightweight nearly-zero-configuration object-relational mapper and fluent query builder for PHP5.
Tested on PHP 5.2.0+ - may work on earlier versions with PDO and the correct database drivers.
Released under a BSD license.
See Also: Paris, an Active Record implementation built on top of Idiorm.
- 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.
- Uses prepared statements throughout to protect against 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 withIdiorm
. 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()
becomesfindMany()
) - you'll need PHP 5.3+
The documentation is hosted on Read the Docs: idiorm.rtfd.org
You will need to install Sphinx and then in the docs folder run:
make html
The documentation will now be in 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; }
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 as it breaks backwards compatibility in previously unexpected ways (see #162, #156 and #133) - sorry for merging this change into Idiorm - closes issue 156
-
find_many()
now returns an associative array with the databases primary ID as the array keys [Surt] - issue #133 - Calls to
set()
andset_expr()
return$this
allowing them to be chained [Surt] - Add PSR-1 compliant camelCase method calls to Idiorm (PHP 5.3+ required) [crhayes] - issue #108
- Add static method
get_config()
to access current configuration [javierd] - issue #141 - Add logging callback functionality [lalop] - issue #130
- Add support for MS SQL
TOP
limit style (automatically used for PDO drivers: sqlsrv, dblib and mssql) [numkem] - issue #116 - Uses table aliases in
WHERE
clauses [vicvicvic] - issue #140 - Ignore result columns when calling an aggregate function [tassoevan] - issue #120
- Improve documentation [bruston] - issue #111
- Improve PHPDoc on
get_db()
[mailopl] - issue #106 - Improve documentation [sjparsons] - issue #103
- Make tests/bootstrap.php HHVM compatible [JoelMarcey] - issue #143
- Fix docblock [ulrikjohansson] - issue #147
- Fix incorrect variable name in querying documentation [fridde] - issue #146
- Documentation moved to idiorm.rtfd.org and now built using Sphinx
- Add support for multiple database connections - closes issue #15 [tag]
- Add in raw_execute - closes issue #40 [tag]
- Add
get_last_statement()
- closes issue #84 [tag] - Add HAVING clause functionality - closes issue #50
- Add
is_new
method - closes issue #85 - Add
ArrayAccess
support to the model instances allowing property access via$model['field']
as well as$model->field
- issue #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 and #22
- Add support for Firebird with
ROWS
andTO
result set limiting and identifier quoting [mapner] - issue #98 - Fix last insert ID for PostgreSQL using RETURNING - closes issues #62 and #89 [laacz]
- Reset Idiorm after performing a query to allow for calling
count()
and thenfind_many()
[fayland] - issue #97 - Change Composer to use a classmap so that autoloading is better supported [javierd] - issue #96
- Add query logging to
delete_many
[tag] - Fix when using
set_expr
alone it doesn't trigger query creation - closes issue #90 - Escape quote symbols in "quoteidentifier_part" - close issue #74
- Fix issue with aggregate functions always returning
int
when isfloat
sometimes required - closes issue #92 - Move testing into PHPUnit to unify method testing and query generation testing
- Fix issue #78 - remove use of PHP 5.3 static call
- Fix bug where input parameters were sent as part-indexed, part associative
- Fix minor bug caused by IdiormStringException not extending Exception
- Setup composer for installation via packagist (j4mie/idiorm)
- Add
order_by_expr
method [sandermarechal] - Add support for raw queries without parameters argument [sandermarechal]
- Add support to set multiple properties at once by passing an associative array to
set
method [sandermarechal] - Allow an associative array to be passed to
configure
method [jordanlev] - Patch to allow empty Paris models to be saved ([j4mie/paris]) - issue #58
- Add
select_many
andselect_many_expr
- closing issues #49 and #69 - Add support for
MIN
,AVG
,MAX
andSUM
- closes issue #16 - Add
group_by_expr
- closes issue #24 - Add
set_expr
to allow database expressions to be set as ORM properties - closes issues #59 and #43 [brianherbert] - Prevent ambiguous column names when joining tables - issue #66 [hellogerard]
- Add
delete_many
method [CBeerta] - Allow unsetting of ORM parameters [CBeerta]
- Add
find_array
to get the records as associative arrays [Surt] - closes issue #17 - Fix bug in
_log_query
with?
and%
supplied in raw where statements etc. - closes issue #57 [ridgerunner]
- Fix bug in quoting column wildcard. j4mie/paris#12
- Small documentation improvements
- Add
is_dirty
method - Add basic query caching
- Add
distinct
method - Add
group_by
method
- Initial release
</div>
</div><!-- /.repo-container -->
<div class="modal-backdrop"></div>
</div><!-- /.container -->
</div><!-- /.wrapper -->
<div class="container">
- Status
- API
- Training
- Shop
- Blog
- About
</ul>
<a href="/">
<span class="mega-octicon octicon-mark-github" title="GitHub"></span>
</a>
<ul class="site-footer-links">
<li>© 2014 <span title="0.04200s from github-fe139-cp1-prd.iad.github.net">GitHub</span>, Inc.</li>
<li><a href="/site/terms">Terms</a></li>
<li><a href="/site/privacy">Privacy</a></li>
<li><a href="/security">Security</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
<div class="fullscreen-overlay js-fullscreen-overlay" id="fullscreen_overlay">
<div id="ajax-error-message" class="flash flash-error">
<span class="octicon octicon-alert"></span>
<a href="#" class="octicon octicon-remove-close close js-ajax-error-dismiss"></a>
Something went wrong with that request. Please try again.
</div>