2009-09-23 18 views
0

Existe-t-il un moyen d'ajouter une étendue par défaut à un modèle basé sur Zend_Db_Table_Abstract.Zend_Db_Table_Abstract et l'étendue par défaut

Je souhaite pouvoir interroger un modèle avec certaines conditions prises par défaut.

par exemple.

  • supprimé = false
  • ordre nom asc

Répondre

1

Vous pouvez remplacer la méthode Zend_Db_Table_Abstract:: _fetch() et modifier le produit Zend_Db_Table_Select là-dedans avant de récupérer les lignes de l'adaptateur de base de données. Autant que je sache tous fetch* -methods et find() dans Zend_Db_Table_Abstract réduire à cette méthode de récupération de ligne générique (en plus de Zend_Db_Table_Abstract::fetchNew() naturellement), de sorte que votre code modifié sera appelé chaque fois que les lignes sont extraites de la base de données.

/** 
* Support method for fetching rows. 
* 
* @param Zend_Db_Table_Select $select query options. 
* @return array An array containing the row results in FETCH_ASSOC mode. 
*/ 
protected function _fetch(Zend_Db_Table_Select $select) 
{ 
    $select->where('deleted = false')->order('name asc'); 
    return parent:: _fetch($select); 
} 
+0

J'ai lu plus tôt ici, mais cant semblent le faire fonctionner: S http://www.zendframeworkinaction.com/2008/01/30/zend_db_table_abstract-in-version-15/ très étrange – sfusion

+0

Qu'est-ce que "ne semble pas pouvoir faire fonctionner" signifie? Recevez-vous des messages d'erreur ou des résultats erronés ou des résultats du tout? Avez-vous essayé de déboguer ce qui se passe? –

+1

Essayez d'ajouter un var_dump ($ select -> __ toString()) dans la méthode ci-dessus - juste avant l'appel de la méthode parent et regardez à quoi ressemble la chaîne SQL générée. –