我已经接管了使用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,我无法在代码中找到任何注册名称空间的地方。
答案 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_"