javascript - 连接查询以获取多个数据到 laravel 中的数据表
问题描述
我想在数据表的一列中显示一些多个值。我加入了两个表来显示数据表中的值。它包括客户数据,并且客户拥有从另一个连接查询中获取数据的多项服务。我如何将这些组合在一起以根据数据表中的每个客户显示多个服务值。我是 laravel 的新手,感谢您的帮助!
加入查询以将数据传递到没有多个值的数据表:
public function getAppointmentData(Request $request)
{
$getData = DB::table('customers')
->join('jobs', 'jobs.id', '=', 'customers.id')
->select('jobs.id', 'user_type','firstname','lastname', 'vehiclemodel', 'date', 'time', 'payment_status', 'amount')->get();
$datatable = DataTables::of($getData)->make(true);
return $datatable;
}
根据每个客户获得多个服务价值:
$getData = DB::table('customers')
->join('customer_service', 'customer_service.customer_id', '=', 'customers.id')
->join('services_info', 'services_info.id', '=', 'customer_service.id')
->select('customer_id','service_id','service')
->get();
上述代码的输出:
我已经拥有的数据表:
我希望数据表中的服务列根据每个客户显示多个服务值。
解决方案
你可以使用 MySQL 的GROUP_CONCAT()
功能:
public function getAppointmentData(Request $request)
{
$services = DB::table('customers')
->join('customer_service', 'customer_service.customer_id', '=', 'customers.id')
->join('services_info', 'services_info.id', '=', 'customer_service.id')
->selectRaw("
customer_id,
GROUP_CONCAT(service) as services_list
")
->groupBy('customer_id')
->toSql();
$getData = DB::table('customers')
->join('jobs', 'jobs.id', '=', 'customers.id')
->join(DB::raw("({$services} as services)"), 'services.customer_id', '=', 'customers.customer_id')
->select('jobs.id', 'user_type','firstname','lastname', 'vehiclemodel', 'date', 'time', 'payment_status', 'amount', 'services_list')->get();
$datatable = DataTables::of($getData)->make(true);
return $datatable;
}
推荐阅读
- unity3d - 如何在 C# 中检查可分性?
- python - 无法使用 selenium 选择角度下拉菜单
- mathjax - MathJax 3 中的丹麦字母正在消失
- android - Flutter 状态管理:使用 `Provider`
- android - 为什么 PackageInstaller 无法安装软件包?
- swift - 如何在 mouseMoved 上显示通知?
- python - 按不同行拆分/读取 CSV 文件
- python - 错误:尝试使用 beautifulsoup 遍历列表时,str' 对象不可调用
- google-cloud-platform - 用于 n2d 标准机器类型的 min-cpu-platform 未显示可从 api 获得
- c# - 如何在 Layout.cshtml 中引用我的包