CakePHP 2 – Load model on the fly
1. Using loadModel
<?php App::uses('AppModel', 'Model'); class Foo extends AppModel { public $useTable = false; function __construct($tablen) { //first check table exists if(!check_table_exists($table)){ $this->useTable = 'comments_' . $tablename["id"]; } parent::__construct(); } function check_table_exists($table) { $dbo = $this->getDataSource(); try { $result = $dbo->execute('DESCRIBE ' . $table); } catch (Exception $e) { $result = false; } return $result; } }
$this->loadModel(‘Foo’, “footable”);
2. You can instantiate the model directly
$model_1 = new Model(array('table' => 'the_table', 'ds' => 'default'));
$model_2 = new Model(array('table' => 'the_table', 'ds' => 'database2'));
3. MISC.
A note on difference between app:import and loadmodel in CakePHP: http://www.devarticles.in/cakephp/a-note-on-difference-between-appimport-and-loadmodel-in-cakephp/
Using App::uses (instead of App::import) in a CakePHP: http://stackoverflow.com/questions/8994514/using-appuses-instead-of-appimport-in-a-cakephp-2-1-plugin