如何将字符串输出从sql转换为整数?

时间:2019-01-25 07:39:52

标签: sql laravel-5 count

我正在使用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"
}
]

区别在于服务器代码中的数字值是字符串形式。

为什么会发生这种情况以及如何解决问题?

1 个答案:

答案 0 :(得分:1)

我有一个类似的问题。看来这是PHP问题。您是否在本地和生产环境上运行相同的PHP版本?

在任何情况下,您都可以将其显式转换为UNSIGNED整数。我能够做到以下几点:

$data = DB::table('results')
   ->selectRaw('gender as gender, CAST(count(*) AS UNSIGNED) as number')
   ->groupBy('gender')
   ->get();