0

我已经接管了一个使用 Zend MVC 和 Zend_Db_Table 编写的用于 DB 访问的应用程序。我正在尝试添加一个新表,但出现错误:

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

但是 maa_agcencies.contact 确实存在,并且与正在访问的其余表在同一个数据库中。

这是我的步骤和代码:

步骤1:

创建模型类

文件:application/models/DbTable/Contact.php

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

第2步:

以与在控制器中执行十几次相同的方式实例化该类(所有其他表都有效)

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

$agency_contact = new Model_DbTable_Contact();

第 3 步:

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

$agency_contact->insert($store_contact);

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

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

我遇到的所有文档都说这就是所需要的,正如我在文件上面所说的,我试图通过它访问我的表已经在访问同一个数据库中的其他 2 个表,实际上就是在我实例化我的上面的行联系模型是这个工作正常的语句:

$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';
}

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

4

2 回答 2

0

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

Example: Application_Model_DbTable_Contact
于 2012-10-16T12:52:32.620 回答
0

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

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

在你的 application.ini 广告这一行

autoloaderNamespaces[] = "Yournamespace_"
于 2012-10-16T12:56:59.317 回答