Laravel und eine While-Schleife
Ich bin neu in Laravel und im moment habe ich ein Stück code in eine Steuerung, die ohne die while
Schleife funktioniert es, ruft es meine Abfrage aus der Datenbank.
public function dash($id, Request $request) {
$user = JWTAuth::parseToken()->authenticate();
$postdata = $request->except('token');
$q = DB::select('SELECT * FROM maps WHERE user_id = :id', ['id' => $id]);
if($q->num_rows > 0){
$check = true;
$maps = array();
while($row = mysqli_fetch_array($q)) {
$product = array(
'auth' => 1,
'id' => $row['id'],
'url' => $row['url'],
'locationData' => json_decode($row['locationData']),
'userData' => json_decode($row['userData']),
'visible' => $row['visible'],
'thedate' => $row['thedate']
);
array_push($maps, $product);
}
} else {
$check = false;
}
return response()->json($maps);
}
Ich versuche, eine Schleife durch die zurückgegebenen Daten aus $q
und verwenden json_decode
auf 2 key/val-Paare, aber ich kann nicht einmal das richtige tut.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht verwenden
mysqli
zum Durchlaufen der Ergebnisse (Laravel nicht verwenden mysqli). Ergebnisse kommen zurück von Laravel ist Abfrage-generator sindÜberfahrbar
, so können Sie einfach mit einer foreach-Schleife:Jeder
$row
ist ein Objekt und kein array:$postdata
in dieser Funktion, so entfernen Sie es.Damit ein besserer Weg, dies zu tun ist mit Laravel Modelle und Beziehungen:
Map
als jede Instanz stellt nur 1 Zeile.Maps::where('foo', 'bar')->get();
und so für den code, den ich geschrieben hatte, machte es Sinn, es zu behalten im plural da, dass Modell ist verantwortlich für ALLE Karten, das heißt, die Tabelle der Karten. Aber Sie haben definitiv einen Punkt. Ich denke, es hängt nur davon ab, den Stil der typischen Verwendung.Können Sie mit einer Schleife über $q mit einem
foreach
:Sehen die Laravel Dokumentation für weitere Informationen.