【问题标题】:CakePHP doesn't load modelCakePHP 不加载模型
【发布时间】:2011-02-13 14:44:57
【问题描述】:

我是 cakePhp 开发的新手。我一直坚持以下问题: 我制作了一些模型、控制器和视图——效果很好。问题是,在生产之后,我必须在逻辑上“连接”到其他表的数据库中创建新表(Transactionaltemp 表和相应的模型和控制器),但技术上不需要 - 对于前任。它保存有关 user_id、时间、ip 和类似信息的临时信息。因此,其他表不需要直接连接到它。 问题是我尝试(在transactionaltemps_controller以外的其他控制器中):

$this->loadModel('Transactionaltemp');

我收到错误 - 未找到模型(这是真的,因为模型在缓存中丢失)。足够有趣的transactionaltempls_controller 在缓存中(在cake_controllers_list 文件中)。 我尝试了以下方法来解决问题:

  1. 清除缓存
  2. 禁用缓存
  3. 尝试在我想使用的控制器中使用uses={..} 代码mymodels_controller
  4. 尝试使用init('Transactionaltemp')

没有成功。下面是对应的代码: 型号:

<?php 
class Transactionaltemp extends AppModel
{
   var $name = 'Transactionaltemp';
   function beforeSave() {
    return true;
   }
}
?>

控制器:

<?php
 class TransactionaltempsController extends AppController
 {
    var $name = 'Transactionaltemps';
    var $scaffold;

 }
 ?>

我会非常感谢任何帮助!!!

【问题讨论】:

  • 您定义模型的文件的名称是什么?
  • 你能从它自己的控制器(Transactionaltemps)访问模型吗?
  • 是的,我可以从它自己的控制器访问模型。我定义模型的文件的名称与模型的类名相同 - transactionaltemp.php
  • 如果您发布一些代码来展示您如何使用 loadModel() 的一些上下文,将会很有帮助。顺便说一句,使用的语法是 var $uses=array('ModelOne','ModelTwo');不像你上面写的那样。如果你确实使用了 $uses,宿主模型必须在数组的第一个。

标签: cakephp model


【解决方案1】:
App:Import('Model','Transactionaltemp');
$this->Transactionaltemp= new Transactionaltemp;

我希望这可以工作

【讨论】:

  • 它对我有用,但有点修复; (应用程序:导入到应用程序::导入)
【解决方案2】:

如果您要连接的表名与您的模型名称不同,则必须在其中指定表名:

<?php 
class Transactionaltemp extends AppModel
{
   var $uses = 'Transactional';
   var $name = 'Transactionaltemp';
   function beforeSave() {
      return true;
   }
}

【讨论】:

  • 是的,我知道。但事实并非如此——我使用的名字完全一样。 (困惑)
  • Hhhmm.. 很奇怪.. 检查您是否使用了遵循 CakePHP 命名约定的名称.. book.cakephp.org/view/901/CakePHP-Conventions 如果您这样做了.. 我不知道发生了什么,我对不起..
【解决方案3】:

试试

App::Import('Model', 'YourModelName');

在您的控制器中(或您想要的位置)。

【讨论】:

    猜你喜欢
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多