2010-12-07 8 views
3

Ich verwende Doctrine 1.2. Ich möchte eine Doctrine_Query ausführen, die anstelle einer Doctrine_Collection eine Klasse meiner Wahl zurückgibt. Das heißt, etwas wieBenutzerdefinierte Sammlungen in Doctrine 1.2

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

$o; //instance of Doctrine_Collection 

wird normalerweise ein generisches Doctrine_Collection-Objekt zurückgeben. Stattdessen würde ich es wie ein Foo_Collection Objekt zurückgeben, was ich an anderer Stelle

class Foo_Collection extends Doctrine_Collection 
{ 

    public function soSomethingSpecificToAFooObject() 
    { 
    } 
} 

definieren, die mir erlauben, logisch Gruppenfunktionalität.

Ist das möglich? Von meinem Lesen und Stöbern in der Code-Basis scheint das etwas mit Hydratoren zu tun zu haben, aber ich war nicht in der Lage, eine Handbuchseite oder ein Tutorial zu machen, das beschreibt, wonach ich suche.

Antwort

4

Im ziemlich sicher, dass Sie nur die folgenden Ihre Record setUp oder construct Methoden hinzufügen (die Tabelle sollte entweder in einem construct ausgeführt wird, bevor setUp verfügbar sein denke ich, obwohl):

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

Sie auch festlegen dies global auf Doctrine_Connection, wenn Sie Doctrine_Collection erweitern und eine andere Klasse in allen Modellen verwenden müssen.

+0

Danke, es war so einfach. –

+0

Das Hinzufügen zur setUp-Methode funktionierte für mich. Danke euch beiden dafür - sehr hilfreich. – paulkmoore

Verwandte Themen