2012-10-16 3 views
0

J'ai pris en charge une application écrite avec l'utilisation de Zend MVC et Zend_Db_Table pour l'accès DB. Je suis en train d'ajouter une nouvelle table mais obtenir l'erreur:Zend_Db_Table Table de base ou vue non trouvée

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

Cependant maa_agcencies.contact très COÛTE existe et est dans le même DB que le reste des tables en cours d'accès.

Voici mes pas et le code:

Étape 1:

Créer le modèle de classe

fichier

: application/modèles/DbTable/Contact.PHP

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

Étape 2 :

Instancier la classe de la même manière qu'une douzaine de fois en courant alternatif ontroller (toutes les autres tables de travail)

fichier

: application/modules/agences/contrôleurs/IndexController.php (étape aussi 3)

$agency_contact = new Model_DbTable_Contact(); 

Étape 3:

Écrivez mes données à ma nouvelle table (store_contact de $ est un tableau assoc avec clé = valeur de nom de colonne = valeur)

$agency_contact->insert($store_contact); 

y at-il une fonction de mise en cache Zend je ne connais pas?

Quelque chose de spécial je dois faire pour le dire j'ai ajouté une nouvelle table? Tous les documents que j'ai rencontrés disent que c'est tout ce qui est nécessaire, et comme je l'ai indiqué ci-dessus, le fichier auquel j'essaie d'accéder accède déjà à 2 autres tables dans la même DB, en fait la ligne juste au-dessus où j'instancie mon modèle de contact est cette déclaration qui fonctionne bien:

$sm = new Model_DbTable_SentEmail(); 

L'idée d'espace de nom semble impressionnante! Si ce système n'était pas une bâtardisation du cadre. Voici un modèle

/** 
* @category Model_DbTable 
* @package  Model_DbTable_States  

class Model_DbTable_States extends Zend_Db_Table_Abstract 
{ 
    protected $_name = 'state_list'; 
} 

travaille actuellement Y at-il dans le vodou commentant peut-être, je ne parviens pas à trouver nulle part dans le code où un espace de noms est enregistré à tous.

+0

peut-être il y a un moyen de la DB comme réinitialiser connexion et reconstruire un fichier de schéma caché quelque part?Je ne m'imaginerais pas qu'il vérifie le schéma de DB chaque fois qu'une connexion est faite, il doit y avoir une version en cache quelque part qui peut être rafraîchie. – Zjoia

Répondre

0

Modifiez les noms de vos classes de Model Directory. Ajouter un préfixe Application_

Example: Application_Model_DbTable_Contact 
0

Vous avez oublié d'ajouter l'espace de noms à votre classe

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

dans votre annonce application.ini cette ligne

autoloaderNamespaces[] = "Yournamespace_" 
+0

l'espace de noms est vide dans ce projet. Quelque part il y a un fichier définissant le schéma, il doit y avoir. Je viens de modifier une table qui fonctionne actuellement dans ce système et je reçois une erreur similaire, il dit que la colonne que j'ai ajouté n'existe pas. Toute idée sur l'endroit où je peux chercher une telle définition, je l'ai déjà rencontré 100 fois à la recherche de toute réponse et il n'y a rien à trouver. Je suis à perte totale. – Zjoia

Questions connexes