php - 如何使用 laravel db 查询为 sql 中的分组项命名?

标签 php mysql laravel query-builder

使用此代码我得到以下输出:

$q = DB::table('payments')
        ->join('agency', 'agency.id', '=', 'payments.agency')
        ->join('paymenttype','paypemttype.id', '=', 'payments.paymenttype')
        ->select(DB::raw('sum(payment) as sum'), 'agency.agency', 'paymenttype.paymenttype')
        ->where('payments.school', '=', Sentry::getUser()->school)
        ->groupBy('payments.agency')
        ->groupBy('payments.paymenttype')
        ->get();

输出是:

[
{
sum: 200,
agency: "city1",
paymenttype: "credit card"
},
{
sum: 200,
agency: "city1",
paymenttype: "transfer"
},
{
sum: 200,
agency: "city2",
paymenttype: "credit card"
},
{
sum: 200,
agency: "city2",
paymenttype: "transfer"
}
  ]

但是我想要那个城市位于表格的左侧,所以我想要这种输出

-   city1  [
{
sum: 200,
paymenttype: "credit card"
},
{
sum: 200,
paymenttype: "transfer"
}],
- city2 [
{
sum: 200,
paymenttype: "credit card"
},
{
sum: 200,
paymenttype: "transfer"
}
  ]

所以我的意思是对象中的对象我想获取这样的数据。 如果您能帮助我,我将非常高兴,感谢您再次提供帮助。

最佳答案

您可以使用keyBy方法。

由于您没有使用 Eloquent,因此您可以自己创建集合。

Laravel 5:

$result = collect($q)->keyBy('agency');

Laravel 4:

use Illuminate\Support\Collection;

$result = Collection::make($q)->keyBy('agency');

关于php - 如何使用 laravel db 查询为 sql 中的分组项命名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30457673/

相关文章:

mysql - 启动mysql时出现错误: Unable to lock ./ibdata1,错误:11

php - 在 Drupal 7 中更改消息

php - 当 AJAX 调用不同的编码页面时实际发生了什么?

php - 使用 PHP 通过 HTTP 从远程服务器复制文件

mysql - MYSQL 无法过滤 NULL

mysql - 根据列中时间戳的交集将一个 MySQL 表的信息附加到另一个表

php - Guzzle 返回流空体而不是 json 体

php - 如何防止 Laravel 调度程序在 cron 作业完成之前运行

php - Laravel:自动从数据库填充

php - 检查用户名是否存在sql和php中的代码