Ich erstelle eine Front-End-Vue-Komponente. Dazu benutze ich Daten und eine Datenbank aus einem Laravel-Projekt. Das Problem, das ich bekam, ist, dass eine Methode von Laravel (und so der AJAX-Aufruf) ein Array zurückgibt, was gut ist, und die andere Methode nur die Objekte (Sammlung?) Mit dem AJAX-Aufruf zurückgibt. Ich brauche beide Aufrufe, die ein Array zurückgeben, weil ich einige Array-Funktionen in meiner Komponente verwende.Rückgabe Array anstelle von Objekten Laravel/Javascript Ajax Anruf
Ich habe alle möglichen Dinge ausprobiert, sowohl im Frontend als auch im Backend. Ich habe versucht, im Backend Laravel ein Array zurückgeben und auf der Front-End habe ich versucht, die Objekte zu einem Array zu setzen. Beides war nicht erfolgreich.
Mein JS Code (und AJAX-Aufrufe)
methods: {
countAllItems() {
this.countItems = this.items.length;
},
getUrl(items) {
let results = items;
results.forEach((item) => {
let id = item.id;
return item.url = `/advertisements/show/${id}`;
});
},
getMax(items) {
let boats = items.slice(0, 4);
this.items = boats;
this.getUrl(this.items);
this.countAllItems();
},
getBoats() {
axios.get('/api/boats')
.then((response) => {
//this will return an array
console.log(response.data);
this.items = response.data;
this.countAllItems();
this.getMax(this.items);
})
.catch((error) => console.log(error));
},
getReservations() {
axios.get('/api/popular')
.then((response) => {
//this will return objects, and must be an array
console.log(response.data);
this.items = response.data;
this.countAllItems();
this.getMax(this.items);
});
}
},
created() {
this.getBoats();
this.getReservations();
}
Die Back-End-
//This will return the array
public function boats() {
return Boat::with('media')->get();
}
//This will return objects
public function messages() {
$boats = Boat::with('media')->get()->sortByDesc(function($boat) {
return count($boat->conversations);
});
return $boats;
}
Gibt es jemanden, der mir helfen kann? Also brauche ich entweder eine Korrektur für das Zurückgeben eines Arrays in der Laravel-Methode oder etwas wie eine Funktion, um beide Objekte in ein Array in JavaScript zu schieben.
bearbeiten
Also habe ich versucht, einige Dinge und tun, dass etwas fiel mir ein. Wenn ich dd($boats)
mache, wird eine Sammlung zurückgegeben. Wenn ich dd($boats->toArray)
mache, gibt es ein Array zurück. Was das Seltsame ist, ist, dass es keinen Unterschied in den AJAX-Aufrufen macht. So $boats->toArray()
wird immer noch nur die Objekte und nicht die Objekte in einem Array zurückgeben.
Ich habe auch versucht, die Objekte in einem Array zu schieben, aber das funktioniert auch nicht. Es wird die Sammlung (als ein Objekt) in ein Array platzieren. Wie kann ich das ändern, dass die Objekte direkt in das Array anstelle der Sammlung als Objekt eingefügt werden?
verwenden toArray(); Funktion – CasperSL
Gefällt mir 'return $ boats-> toArray();'? Weil ich das schon probiert habe und das nicht funktioniert. – Gijsberts
ja, was ist die Ausgabe – CasperSL