Laravel - selectRaw(count(*))以字符串形式返回而不是整数?

时间:2018-02-22 04:45:18

标签: php mysql laravel highcharts

我不知道这是怎么发生的。因为在我的localhost中,它正常工作,但在我的共享托管之后,我注意到了它。我要转换为int的原因是因为highcharts。 https://www.highcharts.com/errors/14

public function assistance()
    {
        $programs = DB::table('assistances')->selectRaw('services.name, count(*) as y')
        ->join('services', 'assistances.service_id', '=', 'services.id')
        ->groupBy('service_id')->get();

        return $programs;
    }

JSON输出是:

[
   {
      name: "BMAP", 
      y: "1"
   }
]

它应该是y: 1没有引用。

缺少什么?这是服务器问题吗?

2 个答案:

答案 0 :(得分:2)

我使用@ Deep3015评论中的JSON_NUMERIC_CHECK参考找到了答案。

解决方案:json_encode()和json_decode();

public function assistance()
    {
        $programs = DB::table('assistances')
        ->join('services', 'assistances.service_id', '=', 'services.id')
        ->selectRaw('services.name, count(*) as y')
        ->groupBy('assistances.service_id')->get();

        return Response::json(json_decode(json_encode($programs, JSON_NUMERIC_CHECK)));
    }

答案 1 :(得分:0)

我使用MySql并成功转换查询中的结果。它比json_decode和json_encode解决方案稍微不那么臭。

    ->selectRaw('services.name, CAST(count(*) AS UNSIGNED) as y')