2012-10-16 37 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

相關問題