public
Description: CakePHP Plugin - Loads model asssociations as needed.
Homepage: www.pseudocoder.com
Clone URL: git://github.com/mcurry/lazy_loader.git
name age message
file README Fri Jul 10 21:47:30 -0700 2009 spacing [mcurry]
file lazy_loader_app_model.php Fri May 01 22:36:45 -0700 2009 all test pass [unknown]
directory tests/ Thu Jul 23 05:42:46 -0700 2009 added model attributes to test models that had ... [mcurry]
README
/*
 * CakePHP Lazy Loader Plugin
 * Copyright (c) 2009 Matt Curry
 * http://www.pseudocoder.com/archives/2009/04/27/github-updates
 *
 * This is my second attempt at this.
 * The code posted by jose_zap (José Lorenzo - http://joselorenzo.com.ve/)
 * on bin.cakephp.org provided inspiration for this revised version
 * http://bin.cakephp.org/saved/39855
 *
 * @author      Matt Curry <matt@pseudocoder.com>
 * @license     MIT
 *
 */

/* Requirements */
PHP 5.1 or greater

/* Description */
The code is very beta.  Please give it a shot and let me know where you hit snags.  
I've tested it in basic app using Containable and it works great.  
It probably doesn't work with $recursive.

If you find a problem check out the unit tests and see if you can create a failing test case

/* Instructions */
1) Download the plugin to /app/plugins/lazy_loader

2) Put this either in your app_model.php or at the top of any model you want to use it:
   App::import('Model', 'LazyLoader.app_model');
   
3) Have your model extend LazyLoaderAppModel instead of AppModel
   class MyModel extends LazyLoaderAppModel {
   ...
   }
   
4) For this to work for HATBM relationships you need to include the joinTable and associationForeignKey in the 
defination.
   This is because Cake uses the associated models to set the defaults for these.  So even if you are following the 
   conventions, set these to avoid having the related model loaded.
   class Post extends LazyLoaderAppModel {
     var $name = 'Post';
     var $hasAndBelongsToMany = array('Tag' => array('joinTable' => 'posts_tags', 'associationForeignKey' => 'tag_id'));

        }