2012-10-16 39 views
0

我接管了使用Zend MVC和Zend_Db_Table编写的用于数据库访问的应用程序。我想添加一个新表,但得到的错误:Zend_Db_Table未找到基表或视图

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

然而maa_agcencies.contact非常DOES存在,并且是在同一个DB为被访问的表的其余部分。

这里是我的步骤和代码:

第1步:

创建模型类

文件:应用程序/模型/ DBTABLE/Contact.php

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

第2步:

以类似的方式实例化类,它在交流中做了十几次ontroller(所有其他表工作)

文件:应用程序/模块/机构/控制器/ IndexController.php(也第3步)

$agency_contact = new Model_DbTable_Contact(); 

第3步:

写我的数据我的新表($ store_contact是关键=列名值=值assoc命令阵列)

$agency_contact->insert($store_contact); 

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

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

我遇到的所有文档都说这是所有必需的,正如我在文件上面声明的那样,我试图通过访问我的表已经访问同一个数据库中的其他两个表,实际上上面的那一行我实例化我的联系人模型是这种说法,工作正常:

$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,我无法找到在命名空间在所有已注册代码的任何地方。

+0

也许有喜欢重新初始化数据库的方式连接并重建某个隐藏的模式文件?我不会想象它会在每次建立连接时检查数据库模式,因此必须有可以刷新的缓存版本。 – Zjoia

回答

0

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

Example: Application_Model_DbTable_Contact 
0

你忘了命名空间添加到您的类

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

在你的application.ini广告这一行

autoloaderNamespaces[] = "Yournamespace_" 
+0

该项目中的名称空间设置为空白。某处有一个定义该模式的文件,必须有。我刚刚修改了一个当前在这个系统中工作的表格,并且出现了类似的错误,它说我添加的列不存在。任何关于我能在哪里找到这样一个定义的想法,我已经100遍地搜寻了整个项目,寻找任何答案,而且没有什么可以找到的。我处于全面亏损状态。 – Zjoia

相关问题