Open christophboecker opened 3 years ago
Was wäre der Vorteil?
Ich könnte z.B. das Ergebnis als JSON versenden. json_encode($collection)
führt jedenfalls nicht zum gewünschten Ergebnis. Vieleicht gibt es ja was passendes und ich finde es nur nicht, deshalb meine Frage.
json_decode($collection, true);
oder json_decode(array_values($collection));
probiert?
(Encode, nicht decode) Führt nicht zum gewünschten Ergebnis. Dann sind auch andere Felder mit drin, die da nix zu suchen haben und die Datensätze sind noch immer kein Array. Ich hab mir fix ne Funktion geschrieben.
@gharlan Was meinst du hierzu? Die Collection inklusive Datasets als Array oder so belassen wie es ist?
Also einerseits sollten die Klassen vielleicht JsonSerializable implementieren, damit die direkte JSON-Umwandlung funktioniert.
Wahrscheinlich würde ich dann noch in der Query-Klasse eine Methode anbieten, die die Daten direkt als Array liefert, ohne überhaupt die Objekte zu erzeugen. Das ist auch hilfreich, wenn man mal nur paar (berechnete) Werte aus der DB will, und nicht die ganzen Objekte. Ob man dann auch noch eine Methode anbieten möchte, um eine Collection komplett in ein Array zu wandeln, weiß ich nicht.
Aktuell müsste es übrigens so klappen:
$array = array_map(fn (rex_yform_manager_dataset $dataset) => $dataset->getData(), $collection->toArray());
Das ist auch aktuell meine Lösung. Wobei ich noch einen draufgesattelt habe und optional ein Unique-Feld als Array-Key nehme :-)
Dafür gibt es übrigens auch eine Hilfsmethode, $collection->toKeyIndex('my_field')
, liefert aber dann ein Array von Dataset-Objekten. Die muss man also weiterhin umwandeln, wenn man reine Arrays will.
Hallöchen, ich suchte eine Methode, um das Ergebnis einer YOrm-Collection komplett als Array zu bekommen. Mit $collection->toArray() wird zwar aus der Collection (oberste Ebene) ein Array, aber die Elemente im Array sind noch immer die Instanzen der Dataset-Klassen.
Gibt es eine Methode, die ich bisher übersehen habe, die so etwas liefern würde:
Oder sogar mit einer aus den Datensätzen abgegriffenen eindeutigen ID statt fortlaufender Numerierung