我正在使用Google Chart API生成图表。我已经在本地完成并成功生成了图表。但是,当我将它们传输到服务器(面板)时,图表已损坏。我检测到用于生成图表值的sql查询输出是以字符串格式“ 6”产生的。
这是获取图表值的代码:
public function gender()
{
$data = DB::table('results')
->select(
DB::raw('gender as gender'),
DB::raw('count(*) as number'))
->groupBy('gender')
->get();
//dd($data);
$array[] = ['Gender', 'Number'];
foreach($data as $key => $value)
{
$array[++$key] = [$value->gender, $value->number];
}
//dd($array);
return view('gender')->with('gender', json_encode($array));
}
在本地,我尝试使用dd($ data)访问sql的数据;产生:
Collection {#263 ▼
#items: array:2 [▼
0 => {#264 ▼
+"gender": "female"
+"number": 6
}
1 => {#266 ▼
+"gender": "male"
+"number": 6
}
]
}
我尝试使用相同的dd($ data)在服务器中访问;
Collection {#260 ▼
#items: array:2 [▼
0 => {#261 ▼
+"gender": "female"
+"number": "6"
}
1 => {#263 ▼
+"gender": "male"
+"number": "6"
}
]
区别在于服务器代码中的数字值是字符串形式。
为什么会发生这种情况以及如何解决问题?
答案 0 :(得分:1)
我有一个类似的问题。看来这是PHP问题。您是否在本地和生产环境上运行相同的PHP版本?
在任何情况下,您都可以将其显式转换为UNSIGNED整数。我能够做到以下几点:
$data = DB::table('results')
->selectRaw('gender as gender, CAST(count(*) AS UNSIGNED) as number')
->groupBy('gender')
->get();