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'));
source: http://stackoverflow.com/questions/22514836/cakephp-load-model-on-the-fly-using-a-different-datasource
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