There is no license information available for the latest version (3.1.1) of this package.

A flexible ORM for Kohana 3.1+

Installs: 48

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 1

Forks: 34


3.1.1 2015-01-02 10:11 UTC

This package is not auto-updated.

Last update: 2022-11-24 10:09:34 UTC


Jelly is a nice little ORM for Kohana 3.1+. The project was originally started by Jonathan Geiger and co-developed by Paul Banks.


Critical to know:

  • use the 3.x/master branches for production as the 3.x/develop branches are subject to frequent and major changes
  • userguide is being updated


Jelly requires the following Kohana versions per Git branch:

  • 3.1/develop and 3.1/master branches: Kohana 3.1.3+
  • 3.2/develop and 3.2/master branches: Kohana 3.2+

Useful stuff:

Get involved in Jelly's developement

As Jelly has always been a community project it's development and future depends on people who are willing to put some time into it. The easiest way to contribute is to fork the project.


  • you can directly edit files on GitHub (look for the Edit this file button), there's no need to get familiar with Git if you don't want to
  • please follow the Kohana conventions for coding
  • read the introduction to the unit tests in the guide and run them if you make changes to Jelly to minimalize the chances of introducing new bugs
  • and thanks for helping Jelly become better!

Notable Features

  • Standard support for all of the common relationships — This includes belongs_to, has_many, and many_to_many. Pretty much standard these days.

  • Top-to-bottom table column aliasing – All references to database columns and tables are made via their aliased names and converted transparently, on the fly.

  • Active testing on MySQL and SQLite — All of the Jelly unit tests work 100% correctly on both MySQL, SQLite and PostgresSQL databases.

  • A built-in query builder — This features is a near direct port from Kohana's native ORM. I find its usage much simpler than Sprig's.

  • Extensible field architecture — All fields in a model are represented by a Field_* class, which can be easily overridden and created for custom needs. Additionally, fields can implement behaviors that let the model know it has special ways of doing things.

  • No circular references — Fields are well-designed to prevent the infinite loop problem that sometimes plagues Sprig. It's even possible to have same-table child/parent references out of the box without intermediate models.