簡體   English   中英

如何使用laravel db query為sql中的分組項目命名?

[英]How to give a name to the grouped items in sql with laravel db query?

使用此代碼,我得到以下輸出:

$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');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM