我在 webman 框架里開發(fā),使用了分頁(yè)查詢數(shù)據(jù) forPage($param['page'], $param['perPage']) ,默認(rèn) page = 1,perPage = 10 ,我使用了 return json([ 'code' => 200100, 'msg' => "請(qǐng)求成功", 'data' => $data, ]); 來(lái)返回json數(shù)據(jù)格式,但是奇怪的事情發(fā)生了,第一頁(yè)返回的是:
{
"code": 200100,
"msg": "請(qǐng)求成功",
"data": [
篇幅有限,數(shù)據(jù)省略.......
]
}
如果是第二頁(yè)的話,返回:
{
"code": 200100,
"msg": "請(qǐng)求成功",
"data": {
篇幅有限,數(shù)據(jù)省略.......
}
}
第一頁(yè) data 是數(shù)組格式,第二頁(yè)data是對(duì)象格式。啥原因?
這是我的 SQL:
$data = Db::table('skiinfo')
->selectRaw('id, logo, name, email, phone, areainfo_id, address, images, tag, introduce, lat, lon, lang, created_at, updated_at,
( 6371 * acos( cos( radians(?) ) * cos( radians( lat ) ) * cos( radians( lon ) - radians(?)) + sin( radians(?) ) * sin( radians( lat ) ) )) AS distance', [$param['lat'], $param['lon'], $param['lat']])
->where('lang', '=', $param['lang'])
->whereNull('deleted_at')
->get()
->forPage($param['page'], $param['perPage'])
->map(function ($res) {
$res->logo = config('app.host_name').$res->logo;
$res->ticketinfo = Db::table('ticketinfo')
->select('elderly_price', 'adults_price', 'children_price')
->where('skiinfo_id', '=', $res->id)
->get();
return $res;
});
輸出的方式為:
return json([
// 'HTTP_OK' => [200100, '請(qǐng)求成功'],
'code' => config('myconfig.statusCode.HTTP_OK')[0],
'msg' => config('myconfig.statusCode.HTTP_OK')[1],
'data' => $data,
]);
最后我加了->toArray(); 也不行。請(qǐng)求大神們指點(diǎn)!
這樣js收到的是數(shù)組
return json_encode([0=>0, 1=>1, 2=>2]);
這樣收到的是對(duì)象
return json_encode([0=>0, 2=>2]);
也就是數(shù)組的key不是從0到N的連續(xù)值就會(huì)判定為對(duì)象
$data = array_values($data);
這樣強(qiáng)制重置下key應(yīng)該就好了