Small but feature rich ORM, has extensible models and builders, baked in upload functionality, supporting multiple backends (rackspace, ftp), polymorphic associations, form builders, nested forms, validators


README

Jam is a small ORM for Kohana 3.3+ that builds on top of Jelly - the project was originally started by Jonathan Geiger and co-developed by Paul Banks.

Build Status Scrutinizer Quality Score Code Coverage Latest Stable Version

Jam adds some much needed features to Jelly project:

  • Lazy loading of collections
  • Modifying Collections on the fly and saving the changes
  • Extending Builder, Model and Meta classes with mixins
  • Sane validation checks that don't always throw exceptions
  • Mass assignment of related models with arrays (easy nested forms)
  • Associations separate from Fields - more powerful and easier to extend
  • Polymorphic Associations (MTI(Multiple Table Inheritance))
  • A lot of tweaks to the api to make it more consistent and to remove redundancy
  • Upload Files with temporary directory to survive validation fail (do not upload images twice in forms)
  • Upload File Servers - Local, FTP and Rackspace
  • Automatically store Uploaded images width / height to relevant fields
  • Built In Popular behaviors - Paranoid, Sluggable, Nested, Sortable, Uploadable
  • Updated files to the Kohana convention (inside kohana directory)
  • Versitile form builder with automattic error display

As the original Jelly had a lot of great but undocumented functionality this guide will try to write about both about the new features and the hidden gems of Jelly, as a more comprehensive guide.

Support

Supports the following PHP versions:

  • PHP 5.3
  • PHP 5.4
  • PHP 5.5
  • PHP 5.6
  • PHP 7
  • HHVM

Works with MySQL using either the PDO or MySQL driver of Kohana Database module.

Jam was developed by the Clippings Team as part of Clippings.com.

The guide itself is heavily influenced by Rails Guides - they did amazing work of creating an accessible documentation and as I'm not much of a writer I've tried to follow their example as much as possible.