0

DB アクセスに Zend MVC と Zend_Db_Table を使用して作成されたアプリケーションを引き継ぎました。新しいテーブルを追加しようとしていますが、エラーが発生します:

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

ただし、maa_agcencies.contact は非常に存在し、アクセスされている残りのテーブルと同じ DB にあります。

私の手順とコードは次のとおりです。

ステップ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にキャッシュ機能はありますか?

新しいテーブルを追加したことを伝えるために何か特別なことをする必要がありますか?

私が遭遇したすべてのドキュメントは、これが必要なすべてであると述べています.ファイルの上に述べたように、テーブルにアクセスしようとしているのは、同じDB内の他の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 に答える