在CakePHP中创建临时表并将其作为模型加载

时间:2011-04-15 10:11:31

标签: php sql cakephp temp-tables

我的计划是使用$ this-> Model-> query()创建一个临时表;方法然后加载它作为模型,但我得到一个错误保持“缺少数据库表”。将调试打开到第二级显示临时表已成功完全创建但由于某种原因,当我尝试将其作为模型加载时,它不起作用。看起来蛋糕甚至没有尝试查看表是否存在,因为没有显示“显示全部列...”查询。不确定如何强制蛋糕检查其存在。

$tmpModel = 'tempModel';
$tmpTable = 'temp_models';

$this->Model->query('CREATE TEMPORARY TABLE `'.$tmpTable ... );
$this->loadModel($tmpModel);

提前致谢。

3 个答案:

答案 0 :(得分:6)

$tmpModel = 'TempModel'; // CamelCase

也可以尝试,ClassRegisty::init($tmpModel);

最后一期可能是缓存。但不要这么认为

答案 1 :(得分:3)

好的,看了一下之后我找到了一个有效的解决方案。 问题是Cake已经在页面加载时加载了模型缓存,因此将它们用作对表的存在的引用。为了解决这个问题,我使用了“App :: import('Model',$ tmpModel);”它创建了新的modelCache,允许loadModel脚本成功运行。

$tmpModel = 'tempModel';
$tmpTable = 'temp_models';

$this->Model->query('CREATE TEMPORARY TABLE `'.$tmpTable ... );
App::import('Model', $tmpModel);
$this->loadModel($tmpModel);

非常感谢

答案 2 :(得分:2)

在google上做了一个小时之后..终于找到了一种在临时表上使用Model的方法,它就像魅力一样 http://web2.0goodies.com/blog/uncategorized/mysql-temporary-tables-and-cakephp-1-3/