【问题标题】:Create temporary table in CakePHP and load it as a Model在 CakePHP 中创建临时表并将其作为模型加载
【发布时间】:2012-12-06 01:54:53
【问题描述】:

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

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

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

提前致谢。

【问题讨论】:

  • 也许是“创建临时表”?!
  • 谢谢,这是一个错字,因为我正在尝试普通表以查看它们是否会以这种方式工作。 (他们没有)
  • 您能否修改您的问题,这对于仍然需要一段时间进行检查的人来说是明智的。从某种意义上说,究竟是什么问题以及下面的解决方案。谢谢。

标签: php sql cakephp temp-tables


【解决方案1】:

$tmpModel = 'TempModel'; // CamelCase

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

最后一个问题可能是缓存。但不这么认为

【讨论】:

  • 谢谢,这些东西一旦知道就可以节省很多时间。
【解决方案2】:

好的,环顾四周后,我找到了一个可行的解决方案。 问题是 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);

还是谢谢

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 虽然理论上这可以回答这个问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 2019-04-19
    相关资源
    最近更新 更多