使用此代码我得到以下输出:
$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/