Ich möchte dies in ein normales Array umwandeln. Möchte das nur entfernen stdClass Object. Ich habe es auch mit versucht ->toArray(); aber ich bekomme einen Fehler:
Aufruf einer Member-Funktion toArray() für ein Nicht-Objekt.
kam dieses Objekt von der DB? Ich habe Laravel nicht verwendet, aber vielleicht haben sie eine API, die ein assoziatives Array anstelle von Objekten ergibt. Sie müssen nicht das gesamte Objekt konvertieren und dann in ein anderes Array übertragen
foreach($yourArrayName as $object)
{
$arrays[] = $object->toArray();
}
// Dump array with object-arrays
dd($arrays);
Oder wann toArray() schlägt fehl, weil es eine stdClass ist
foreach($yourArrayName as $object)
{
$arrays[] = (array) $object;
}
// Dump array with object-arrays
dd($arrays);
Funktioniert nicht? Vielleicht findest du hier deine Antwort:
Konvertieren Sie das PHP-Objekt in ein assoziatives Array
Jarek Tkaczyk
UPDATE seit Version 5.4 von Laravel ist es nicht mehr möglich.
Sie können Ihre Datenbankkonfiguration ändern, wie von @Varun vorgeschlagen, oder wenn Sie dies nur in diesem Fall tun möchten, dann:
DB::setFetchMode(PDO::FETCH_ASSOC);
// then
DB::table(..)->get(); // array of arrays instead of objects
// of course to revert the fetch mode you need to set it again
DB::setFetchMode(PDO::FETCH_CLASS);
Event::listen(StatementPrepared::class, function ($event) {
$event->statement->setFetchMode(...);
});
Ich denke, Sie sollten Ihrer Frage hinzufügen, dass dies den Abrufmodus für alle Abfragen ändert, nicht nur für diese. Aber schön zu wissen, dass es auch so geändert werden kann
– Marcin Nabiałek
3. Oktober 2014 um 7:33 Uhr
Ja, es wirkt sich auf alle Abfragen für diese Anfrage aus, sofern Sie sie nicht rückgängig machen. Bearbeitet, um es klar zu machen.
– Jarek Tkaczyk
3. Oktober 2014 um 7:49 Uhr
Sie können auch config/database.php bearbeiten, ‘fecth’ => PDO::FETCH_CLASS durch PDO::FETCH_ASSOC ersetzen
– Tim Wang
30. Oktober 2015 um 9:56 Uhr
Dies funktioniert seit Version 5.4 nicht mehr auf neuem Laravel. Sie verschrotten dies
– Benjamin Limanto
9. Februar 2020 um 10:56 Uhr
Nur für den Fall, dass hier noch jemand landet, der nach einer Antwort sucht. Dies kann mit einfachem PHP erfolgen. Eine einfachere Möglichkeit besteht darin, das Objekt mit reverse-json zu versehen.
function objectToArray(&$object)
{
return @json_decode(json_encode($object), true);
}
Es ist auch möglich, ein Objekt in ein Array umzuwandeln. Das hat bei mir hier funktioniert.
(array) $object;
wird konvertieren
stdClass Object
(
[id] => 4
)
zu
Array(
[id] => 4
)
Hatte das gleiche Problem beim Versuch, Daten vom Abfragegenerator an eine Ansicht zu übergeben. Da Daten als Objekt kommen. Sie können also Folgendes tun:
$view = view('template', (array) $object);
Und aus Ihrer Sicht verwenden Sie Variablen wie
{{ $id }}
11206100cookie-checkKonvertieren Sie das Laravel-Objekt in ein Arrayyes
kam dieses Objekt von der DB? Ich habe Laravel nicht verwendet, aber vielleicht haben sie eine API, die ein assoziatives Array anstelle von Objekten ergibt. Sie müssen nicht das gesamte Objekt konvertieren und dann in ein anderes Array übertragen
– Kevin
3. Oktober 2014 um 6:35 Uhr
Ja, es kam von der DB.
– Dein Freund
3. Oktober 2014 um 6:37 Uhr
Doppelte Frage? stackoverflow.com/questions/28658891/…
– Stefano Grönland
15. Februar 2016 um 16:25 Uhr