Я почти уверен, что вы не сможете сделать это, используя временные таблицы. Это связано с тем, что базовое кэширование схемы Cake использует MySql ' SHOW TABLES ', который не не возвращает временные таблицы - следовательно, вы всегда получите таблицу "Таблица базы данных" название "для модели" название модели "не найдено"
Поэтому я предлагаю создать стандартную таблицу и затем отбросить ее, как только вы закончите. Вот пример, который может быть вызван из контроллера ' Users ':
// Define temporary model
$tempModel = 'TempUser';
// Create table
$this->User->query("CREATE TABLE IF NOT EXISTS `". Inflector::tableize($tempModel) ."` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL DEFAULT '',
`email` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
// load the model
$this->loadModel($tempModel);
/**
* Prevent caching of database schema and then get
* the latest schema that includes our new table
*/
$this->$tempModel->cacheSources = false;
$this->$tempModel->schema();
// Save
$this->$tempModel->save(array(
$tempModel => array(
'name' => 'Testing',
'email' => 'joe.bloggs@google.co.uk'
)
));
// Paginate
$data = $this->paginate($tempModel);
// Drop Table
$this->User->query("DROP TABLE `". Inflector::tableize($tempModel) ."`");