我正在尝试向分页结果中添加一些数据。 这是代码:
// query select and filter
[...]
$totalAmount = $sales->sum('amount');
$result = $sales->paginate($rowsPerPage);
return $result;
结果是:
{
"datatable": {
"current_page": 1,
"data": [
{
"sale": 13047689,
"customer": "0017850000104",
"date": "2015-12-23 23:15:06",
"amount": "129.84",
}
],
"first_page_url": "http://intranet/api/user/sales/datatable?custom=value&page=1",
"from": 1,
"last_page": 1,
"last_page_url": "http://intranet/api/user/sales/datatable?custom=value&page=1",
"next_page_url": null,
"path": "http://intranet/api/user/sales/datatable",
"per_page": "10",
"prev_page_url": null,
"to": 1,
"total": 1
}
}
我想将totalAmount添加到该分页对象中。
我尝试过的事情:
$result->appends('totalAmount', $totalAmount);
我在Internet上找到了此方法,但似乎没有任何作用...结果与上面的完全一样,没有此属性。
我发现了另一种方法。
$result->put('totalAmount', $totalAmount);
此方法确实有效,但不是我需要的方法。这是为了在结果中添加一些行,因为它会将属性添加到“数据”中。当我将此结果传递给数据表时,这破坏了我的代码。
{
"datatable": {
"current_page": 1,
"data": {
"0": {
"sale": 13047689,
"customer": "0017850000104",
"date": "2015-12-23 23:15:06",
"amount": "129.84",
},
"totalAmount": "129.84"
},
"first_page_url": "http://intranet/api/user/sales/datatable?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "http://intranet/api/user/sales/datatable?page=1",
"next_page_url": null,
"path": "http://intranet/api/user/sales/datatable",
"per_page": "10",
"prev_page_url": null,
"to": 2,
"total": 1
}
}
我该怎么办?
我想要这个:
{
"datatable": {
"current_page": 1,
"data": [
{
"sale": 13047689,
"customer": "0017850000104",
"date": "2015-12-23 23:15:06",
"amount": "129.84",
}
],
"first_page_url": "http://intranet/api/user/sales/datatable?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "http://intranet/api/user/sales/datatable?page=1",
"next_page_url": null,
"path": "http://intranet/api/user/sales/datatable",
"per_page": "10",
"prev_page_url": null,
"to": 2,
"total": 1,
"totalAmount": "129.84"
}
}
否则,下一步将是:
{
"datatable": {
"current_page": 1,
"data": [
{
"sale": 13047689,
"customer": "0017850000104",
"date": "2015-12-23 23:15:06",
"amount": "129.84",
}
],
"first_page_url": "http://intranet/api/user/sales/datatable?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "http://intranet/api/user/sales/datatable?page=1",
"next_page_url": null,
"path": "http://intranet/api/user/sales/datatable",
"per_page": "10",
"prev_page_url": null,
"to": 2,
"total": 1,
"totalData": {
"accumulated1": 235,
"accumulated2": 799,
"accumulated3": 1680,
},
}
}
有帮助吗?谢谢。
答案 0 :(得分:0)
请尝试使用
$result->totalAmount = $totalAmount;
然后使用$result->totalAmount;
即可访问它。
这只是一个对象,应该没有任何问题
答案 1 :(得分:0)
您需要先为响应创建资源,然后添加元数据以得到如下结果:
return (new UserCollection(User::all()->load('roles')))
->additional(['meta' => [
'key' => 'value',
]]);
答案 2 :(得分:0)
尝试一下:
$totalAmount = $sales->sum('amount');
$result = $sales->paginate($rowsPerPage);
$custom = collect(['totalAmount' => $totalAmount]);
$data = $custom->merge($result);