2010-02-18 16 views
2

Je souhaite étendre Zend_Db_Table_Row_Abstract pour avoir des champs supplémentaires en plus de ceux de la table.Extension de Zend_Db_Table_Row_Abstract

exemple.

Je

et

class Automobili_Model_Row_Car extends Zend_Db_Table_Row_Abstract { 
} 

table de voitures ont model_id, qui fait référence à la table modèle (corsa, clio ...), je veux Automobili_Model_Row_Car avoir le modèle chargé de la table dépendante modèle, pas seulement model_id de la table de voiture.

Quel est le droit de le faire?

Cordialement, Sasa Stamenkovic.

Répondre

1

Vous avez quelques options:

Vous avez les méthodes findDependentRowset() et findParentRow() mentionnées plus haut. Pour ceux que je dirais lire la documentation: http://framework.zend.com/manual/en/zend.db.table.relationships.html. Je n'ai jamais vraiment compris cette méthode, donc je ne vais pas en dire trop à ce sujet.

Une autre option est Zend_Db_Table_Row_Abstract a une fonction init() que vous pouvez remplacer. Vous pouvez charger l'autre ligne à partir de là et chaque fois qu'un objet Car est créé, il charge le modèle. Cela peut être coûteux mais comme pour chaque objet vous avez une autre requête à votre base de données. Si vous chargez 50 lignes dans une requête, vous avez 50 autres requêtes qui seront exécutées lors de la création de l'objet Car.

Une autre option consiste à ajouter une fonction getModel() à la classe Car. Cette fonction chargera paresseusement la classe Model à la demande.

Espérons que cela aide.

+0

Bon point. Je pensais que cela aussi, l'exécution de requête supplémentaire est un tel gaspillage. Mais redéfinir Zend_Db_Table_Row_Abstract :: __ get() peut être intéressant. Je peux aller chercher des données référencées là seulement au cas où j'en aurais besoin. Tous les conseils sont les bienvenus. J'ai juste besoin de trouver la bonne façon d'extraire les données de la classe en étendant Zend_Db_Table_Row_Abstract. Dans les classes qui étendent Zend_Db_Table_Abstract, je lance select() ou insert(), mais je n'ai jamais rien fait dans Zend_Db_Table_Row_Abstract. Merci. – umpirsky

0

Pouvez-vous poster plus de détails sur la façon dont vous voulez que ça fonctionne exactement ... Je veux dire que vous pouvez toujours chercher le jeu de lignes dépendant ou parent avec findDependentRowset et respectivement.