2010-12-07 5 views
3

J'utilise Doctrine 1.2. Je voudrais exécuter une Doctrine_Query qui, au lieu de retourner une Doctrine_Collection, retournera une classe de mon choix. C'est-à-dire que quelque chose commeCollections personnalisées dans la doctrine 1.2

$o = Doctrine_Query::create() 
->from('Foo') 
->execute(); 

$o; //instance of Doctrine_Collection 

retournera normalement un objet Doctrine_Collection générique. Au lieu de cela, je voudrais pour retourner un objet Foo_Collection, que je définis ailleurs

class Foo_Collection extends Doctrine_Collection 
{ 

    public function soSomethingSpecificToAFooObject() 
    { 
    } 
} 

qui me permettra de logique fonctionnalité de groupe.

Est-ce possible? De ma lecture et piquer à la base du code, cela semble avoir quelque chose à voir avec hydrators, mais je n'ai pas été en mesure d'une page de manuel ou d'un tutoriel qui couvre ce que je suis après.

Répondre

4

Im assez sûr que vous pouvez simplement ajouter ce qui suit à setUp ou construct méthodes de votre dossier (la table devrait être disponible dans l'une construct est exécutée avant setUp je pense que):

$this->_table->setAttribute(Doctrine_Core::ATTR_COLLECTION_CLASS, 'Foo_Collection'); 

Vous pouvez également définir ceci globalement sur Doctrine_Connection si vous devez étendre Doctrine_Collection et utiliser une classe différente dans tous les modèles.

+0

Merci, c'était aussi simple que ça. –

+0

L'ajout à la méthode setUp a fonctionné pour moi. Merci à vous deux pour cela - très utile. – paulkmoore

Questions connexes