Zend_Db_Table未找到基表或视图

时间:2012-10-16 03:51:28

标签: mysql zend-framework zend-db-table

我已经接管了使用Zend MVC和Zend_Db_Table进行数据库访问的应用程序。我想添加一个新表,但得到错误:

Base table or view not found: 1146 Table 'maa_agencies.contact' doesn't exist

然而,maa_agcencies.contact非常存在,并且与正在访问的其余表位于同一个数据库中。

以下是我的步骤和代码:

第1步:

创建模型类

file:application / models / DbTable / Contact.php

class Model_DbTable_Contact extends Zend_Db_Table_Abstract
{
    protected $_name = 'contact';
}

第2步:

以与在控制器中完成十几次相同的方式实例化类(所有其他表都可用)

file:application / modules / agency / controllers / IndexController.php(也是第3步)

$agency_contact = new Model_DbTable_Contact();

第3步:

将我的数据写入我的新表($ store_contact是一个关键数组,其中键=列名称值=值)

$agency_contact->insert($store_contact);

Zend中是否有一些缓存功能我不知道?

我需要做一些特别的事情来告诉它我添加了一个新表吗?

我遇到的所有文档都说这就是所有需要的,而且正如我在上面说明的那样,我试图通过同一个数据库访问我的表,实际上就是上面的那一行我实例化我的Contact模型是这个语句可以正常工作:

$sm = new Model_DbTable_SentEmail();

名称空间的想法似乎很棒!如果这个系统不是框架的一些混蛋。这是一个当前正在运行的模型

/**
 * @category    Model_DbTable
 * @package     Model_DbTable_States    

class Model_DbTable_States extends Zend_Db_Table_Abstract
{
  protected $_name = 'state_list';
}

在评论中是否有一些vodoo,我无法在代码中找到任何注册名称空间的地方。

2 个答案:

答案 0 :(得分:0)

更改“模型目录”的“类名”。添加前缀Application_

Example: Application_Model_DbTable_Contact

答案 1 :(得分:0)

您忘记将命名空间添加到您的班级

class Yournamespace_Model_DbTable_Contact extends Zend_Db_Table_Abstract
{
    protected $_name = 'contact';
}

在你的application.ini广告这一行

autoloaderNamespaces[] = "Yournamespace_"