Ich habe in der Doktrin Dokumentation über Hydration gelesen, aber ich kann immer noch nicht verstehen, was es ist.Was ist die Hydratation der Lehre?
Könnte jemand bitte erklären?
Ich habe in der Doktrin Dokumentation über Hydration gelesen, aber ich kann immer noch nicht verstehen, was es ist.Was ist die Hydratation der Lehre?
Könnte jemand bitte erklären?
Hydration ist eine Methode zum Zurückgeben von Abfrageergebnissen. Zum Beispiel:
HYDRATE_ARRAY
- Dadurch kehren Sie eine Reihe von Datensätzen, die durch eine andere Anordnung dargestellt:
$q = Doctrine_Query::create()
->from('Post p')
->setHydrationMode(Doctrine::HYDRATE_ARRAY);
$resultSet = $q->execute(); // $resultSet is an array
foreach ($resultSet as $post) {
// $post is an array
echo $post['title'];
}
HYDRATE_RECORD
- Dadurch kehren 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 object
foreach ($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 von Abfrage r zurück eiter:
$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 ein paar weitere Methoden ist, können Sie über jede in der Dokumentation lesen.
ok..so normalerweise, wenn ich sql verwende, gibt es ein mysql Objekt zurück und ich muss mysqli_fetch_assoc verwenden, dann sortiere ich sie selbst und so weiter ... aber jetzt ist alles für mich sortiert. darum geht es bei der Hydration, die mir sortierte Objekte/Arrays gibt? –
Nein, es geht nicht um Sortierresultate ('orderBy()' handle dies). Es geht um * Was wird Ihre Abfrage ergeben *, ob es ein einzelner Skalarwert ('HYDRATE_SINGULAR_SCALAR') ist, ein Array oder Arrays, bei denen geschachtelte Arrays jeden Datenbankeintrag (' HYDRATE_ARRAY') oder eine Sammlung von Objekten ('HYDRATE_RECORD') repräsentieren). Führen Sie [var_dump] (http://pl.php.net/manual/en/function.var-dump.php) im Abfrageergebnis für jeden Hydrationsmodus aus - das ist der beste Weg zu sehen, "wie es funktioniert". – Crozin
aha..ich denke ich bekomme es jetzt. Es geht also darum, in welcher Form ich das Ergebnis haben möchte: Skalarwert, Arrays oder Objekte? das klingt nach einem sehr netten Feature. als ich sie nicht selbst von mysqli_object konvertieren muss :) –
Doctrine2 Dokumentation Referenz erklärt HYDRATATION: http://www.doctrine-project.org/docs/orm/2.0/en/reference/dql-doctrine-query-language.html#query-result-formats
$q->fetchOne(array(), Doctrine_Core::HYDRATE_ARRAY);
It will return just a simple array instead of a doctrine collection object.
nicht konstruktiv? Dies ist eines der grundlegendsten Konzepte, um zu verstehen, wie die Doktrin-Interna funktionieren. – csvan
Ich denke, diese Frage sollte eher geschützt als geschlossen werden. – Simon
@Simon Zustimmen. Frage und die angenommene Antwort sind beide beliebt, warum nicht verschieben Sie es in _protected_ state dann? –