Laravel 5.8.5
MariaDB 10.3.11
php 7.2.11
有必要提取客户列表及其编号:
$data = DB::select('SELECT count(*) AS `cnt`, GROUP_CONCAT(id) AS `dealsIds` FROM clients GROUP BY id;');
$header = array ('Content-Type' => 'application/json; charset=UTF-8', 'charset' => 'utf-8');
return response()->json($data,200,$header,JSON_UNESCAPED_UNICODE);
问题在于它将客户端列表视为一个字符串,但我们需要一个数组。
如果您使用连接并传递括号,您可以“绘制”一个数组,但它仍然是一个带引号的字符串。如何让 Laravel 和/或 Mysql 清楚我们想在那里看到一个数组?使用https://dev.mysql.com/doc/refman/5.7/en/json-function-reference.html进行的实验没有给出肯定的结果。有一个选项可以在没有 group_concat 的情况下使用单独的请求提取此列表,然后手动将其组合到一个数组中,然后一切正常。但我想在一个请求中完成所有事情,而不需要在 php 中进行不必要的逻辑。
当然,使用 GROUP_CONCAT 时会有一个字符串。+ 此功能有字符限制。更好地使用这个选项(它会更快):