我是Laravel 5.4和Vue js 2的新手,我遇到了这个我可以解决的问题。
我有一个带有2种方法的控制器(和相关的路线):
public function index()
{
//
return BookingPayment::all();
}
public function index_booking($id_booking)
{
return BookingPayment::all()
->where('id_booking', '=', $id_booking)
->toArray(); // <<-- no effects !?
}
方法index
返回表格中的所有行,index_booking
执行过滤器id_booking字段。
在php我的PHP页面中,我有一个javascript,它在这两条路线上发出请求。
我的问题是当我使用index_booking
时,请求返回一个Object。我期待一个数组,因为我将能够轻松地使用数组函数来操作结果。
这是我的javascript:
var vm = new Vue({
el: '#bookingpay',
data: function () {
return {
booking_id: 15,
payments: [],
input: [{id: 0, id_booking: 0, new_amount: 99}]
}
},
mounted: function () {
this.fetchPayment();
},
methods: {
fetchPayment: function () {
this.$http.get('/api/bookingpayments_bybooking/' + this.booking_id).then(function (response) {
this.payments = response.data;
})
},
delPayment: function (id, index) {
this.$http.delete('/api/bookingpayments/' + id).then(function () {
this.payments.splice(index, 1); // doesn't work on Ojbect
})
},
addPayment: function () {
this.$http.post('/api/bookingpayments', this.input).then(function () {
this.payments.push(this.input);
})
},
}
});
这是我期望作为http查询响应的那种格式。这是我使用索引时所拥有的:
[
{
"id": 79,
"id_booking": 3,
"amount": "10.00"
},
{
"id": 80,
"id_booking": 3,
"amount": "10.00"
},
....
这是我使用index_booking
时的内容:
{
"28": {
"id": 29,
"id_booking": 15,
"amount": "45.00"
},
"29": {
"id": 30,
"id_booking": 15,
"amount": "48.00"
}
}
我被卡住了!任何帮助将非常感激。干杯
答案 0 :(得分:0)
您的public function index_booking($id_booking)
{
// This will return a Collection that will be translated to an array/json when you hit the endpoint via ajax. There is no need for toArray(), though...
return BookingPayment::where('id_booking', '=', $id_booking)->get();
}
错了。正确的方法是:
std::accumulate