Nicht konstruktiv? Dies ist eines der grundlegendsten Konzepte, um zu verstehen, wie die Interna der Doktrin funktionieren.
CSvan
6
Ich denke, diese Frage sollte eher geschützt als geschlossen werden.
Simon
2
@ Simon zustimmen. Die Frage und die akzeptierte Antwort sind beide beliebt. Warum nicht dann in den geschützten Zustand versetzen ?
Denis Kulagin
Antworten:
92
Die Flüssigkeitszufuhr ist eine Methode zur Rückgabe von Abfrageergebnissen. Beispielsweise:
HYDRATE_ARRAY - Dies gibt Ihnen ein Array von Datensätzen zurück, die durch ein anderes Array dargestellt werden:
$q =Doctrine_Query::create()->from('Post p')->setHydrationMode(Doctrine::HYDRATE_ARRAY);
$resultSet = $q->execute();// $resultSet is an arrayforeach($resultSet as $post){// $post is an array
echo $post['title'];}
HYDRATE_RECORD- Dadurch erhalten Sie eine Sammlung ( Doctrine_Collection ) von Objekten:
$q =Doctrine_Query::create()->from('Post p')->setHydrationMode(Doctrine::HYDRATE_RECORD);// Unnecessary, HYDATE_RECORD is default method
$resultSet = $q->execute();// $resultSet is an Doctrine_Collection objectforeach($resultSet as $post){// $post is an Post object
echo $post->getTitle();
echo $post['title'];// Each Doctrine's Model object implements ArrayAccess interface so this is possible
echo $post->myCustomMethod();}
HYDRATE_SINGULAR_SCALAR - Gibt den Wert der ersten Spalte des Abfrageergebnisses zurück:
$q =Doctrine_Query::create()->select('p.created_at')->from('Post p')->where('p.id = ?',321)->setHydrationMode(Doctrine::HYDRATE_SINGULAR_SCALAR);
$createdAt = $q->execute();// $createdAt has value of first column from first record from result set (eg.: 2008-04-06 21:22:35)
Es gibt noch einige weitere Methoden, die Sie in der Dokumentation nachlesen können.
ok..so normalerweise, wenn ich sql benutze, gibt es ein mysql-Objekt zurück und ich muss mysqli_fetch_assoc verwenden, sie dann selbst sortieren und so weiter ... aber jetzt ist alles für mich sortiert. Darum geht es bei der Flüssigkeitszufuhr, wenn ich sortierte Objekte / Arrays bekomme?
nie_had_a_name
4
Nein, es geht nicht darum, das Ergebnis zu sortieren ( orderBy()behandeln Sie dies). Es geht darum, was Ihre Abfrage ergibt , ob es sich um einen einzelnen Skalarwert ( HYDRATE_SINGULAR_SCALAR), ein Array oder Arrays handelt, in denen verschachtelte Arrays jeden Datenbankdatensatz ( HYDRATE_ARRAY) oder eine Sammlung von Objekten ( HYDRATE_RECORD) darstellen. Hat Var_dump auf Abfrageergebnis für jeden Trink Modus - „wie es funktioniert“ , dass der beste Weg ist , um zu sehen
Crozin
4
nur ein kleiner tipp. In 1.2 wird HYDRATE_SINGULAR_SCALARein undefinierter konstanter Fehler zurückgegeben. HYDRATE_SINGLE_SCALARist richtig.
Darmen Amanbayev
1
Als Notiz Doctrine::HYDRATE_RECORDist jetzt bekannt alsDoctrine::HYDRATE_OBJECT
Steve Tauber
1
Ein Link zu der oben genannten Dokumentation würde diese Antwort hilfreicher machen.
Antworten:
Die Flüssigkeitszufuhr ist eine Methode zur Rückgabe von Abfrageergebnissen. Beispielsweise:
HYDRATE_ARRAY
- Dies gibt Ihnen ein Array von Datensätzen zurück, die durch ein anderes Array dargestellt werden:HYDRATE_RECORD
- Dadurch erhalten Sie eine Sammlung ( Doctrine_Collection ) von Objekten:HYDRATE_SINGULAR_SCALAR
- Gibt den Wert der ersten Spalte des Abfrageergebnisses zurück:Es gibt noch einige weitere Methoden, die Sie in der Dokumentation nachlesen können.
quelle
orderBy()
behandeln Sie dies). Es geht darum, was Ihre Abfrage ergibt , ob es sich um einen einzelnen Skalarwert (HYDRATE_SINGULAR_SCALAR
), ein Array oder Arrays handelt, in denen verschachtelte Arrays jeden Datenbankdatensatz (HYDRATE_ARRAY
) oder eine Sammlung von Objekten (HYDRATE_RECORD
) darstellen. Hat Var_dump auf Abfrageergebnis für jeden Trink Modus - „wie es funktioniert“ , dass der beste Weg ist , um zu sehenHYDRATE_SINGULAR_SCALAR
ein undefinierter konstanter Fehler zurückgegeben.HYDRATE_SINGLE_SCALAR
ist richtig.Doctrine::HYDRATE_RECORD
ist jetzt bekannt alsDoctrine::HYDRATE_OBJECT
Es wird nur ein einfaches Array anstelle eines Doktrinensammlungsobjekts zurückgegeben.
quelle