app9bergamo.com

  

Beste Artikel:

  
Main / Datamapper wo nicht gleich SQL

Datamapper war nicht gleich SQL

Die Finder-Methoden für DataMapper-Objekte sind in DataMapper :: definiert. Dazu gehören get, all, first, last. DataMapper verfügt über Methoden, mit denen Sie einen einzelnen Datensatz nach Schlüssel abrufen können, die erste Übereinstimmung mit einer Reihe von Bedingungen oder eine Sammlung von Datensätzen, die mit Bedingungen übereinstimmen.

Bereiche wie dieser können sogar Argumente haben. Tun Sie alles in ihnen, stellen Sie nur sicher, dass sie eine Abfrage zurückgeben. Anstatt Bedingungen mithilfe von SQL-Fragmenten zu definieren, können wir Bedingungen mithilfe eines Hashs angeben. Die obigen Beispiele sind ziemlich einfach, aber Sie fragen sich vielleicht, wie wir Bedingungen festlegen können, die über die Gleichheit hinausgehen, ohne auf SQL zurückzugreifen. Mit DataMapper können Sie komplexe Objektdiagramme erstellen und suchen, indem Sie einfach einen verschachtelten Hash von Bedingungen bereitstellen.

Mögliche Schlüssel sind alle Eigenschafts- und Beziehungsnamen als Symbole oder Zeichenfolgen, die im Modell festgelegt sind, auf das die aktuelle Verschachtelungsebene zeigt. Die verfügbaren Toplevel-Schlüssel hängen vom Modell ab, an das der Bedingungen-Hash übergeben wird. Mögliche Werte für Eigenschaftsnamenschlüssel sind normalerweise einfache Objekte wie Zeichenfolgen, Zahlen, Datumsangaben oder Boolesche Werte.

Mögliche Werte für Beziehungsnamenschlüssel sind entweder ein Hash, wenn die Beziehung auf eine einzelne Ressource verweist, oder ein Array von Hashes, wenn die Beziehung auf viele Ressourcen verweist. Durch Hinzufügen eines Beziehungsnamens als Schlüssel wird dem Modell, auf das die Beziehung zeigt, eine weitere Verschachtelungsebene hinzugefügt.

Innerhalb dieser neuen Ebene sind die verfügbaren Schlüssel die Eigenschafts- und Beziehungsnamen des Modells, auf das die Beziehung verweist. Das folgende Beispiel zeigt ein typisches Domain-Modell für Kundenaufträge und zeigt, wie verschachtelte Bedingungen zum Erstellen und Suchen bestimmter Ressourcen verwendet werden können. Wenn Sie die Reihenfolge einer Reihe von Ergebnissen garantiert haben, können Sie auch nur die ersten zehn Ergebnisse verwenden.

Um komplexere Abfragen durchzuführen, können mit DataMapper Abfragen oder genauer gesagt Sammlungen mithilfe von Set-Operatoren kombiniert werden. Natürlich könnten die beiden letztgenannten Abfragen unter Verwendung der Standardsymboloperatoren erreicht werden. Set-Operatoren funktionieren jedoch für jede Sammlung, und so auch für Zoo. Sie können auch weiterhin die Syntax der interpolierten Array-Bedingung verwenden:

DataMapper gruppiert automatisch nach allen ausgewählten Spalten, um konsistente Ergebnisse über verschiedene Datenspeicher hinweg zurückzugeben. Wenn Sie explizit nach einigen Spalten gruppieren müssen, können Sie Folgendes verwenden: DataMapper löst DataMapper :: Damit Folgendes funktioniert, müssen dm-Aggregate erforderlich sein.

Ressourceneigenschaft: Ausgehend von einem Stammmodell können Sie jede Beziehung mit ihrem Namen aufrufen. Das zurückgegebene Objekt antwortet erneut auf alle Eigenschafts- und Beziehungsnamen, die im Zielmodell der Beziehung definiert sind. Dies bedeutet, dass Sie die Kette der verfügbaren Beziehungen durchlaufen und dann mit einer Eigenschaft am Ende dieser Kette abgleichen können. Das Objekt, das beim letzten Aufruf eines Eigenschaftsnamens zurückgegeben wurde, antwortet auch auf alle Vergleichsoperatoren, die in herkömmlichen Abfragen verfügbar sind.

Dies sorgt für eine leistungsstarke Verbindungskonstruktion! Finde alle Zoos in Illinois oder solche mit fünf oder mehr Tigern Zoo. Wird eine veränderliche Sammlung von Zoos Zoo zurückgeben. Die Sammlung ist unveränderlich, da wir den Primärschlüssel des Modells nicht projiziert haben. ImmutableError beim Versuch, eine Ressource in der zurückgegebenen Sammlung zu ändern. Beachten Sie, dass Sie, wenn Sie den Primärschlüssel nicht einschließen, einen expliziten Ordnungsvektor angeben müssen, da DM standardmäßig den Primärschlüssel verwendet, wenn dies zumindest derzeit nicht anders angegeben wird.

PostgreSQL zeigt diese eher informative Fehlermeldung an, wenn Sie den Bestellvektor in der folgenden Abfrage weglassen. Holen Sie sich den niedrigsten Wert einer Eigenschaft Freund. Holen Sie sich den Durchschnittswert eines Immobilienfreundes.

(с) 2019 app9bergamo.com