Я пытаюсь сделать сумму на ключе сбора и не могу понять это - PullRequest
1 голос
/ 25 апреля 2019

У меня почти полная система в Laravel 5.4, но я испытываю трудности с использованием суммы для ключа в коллекции.

Я пробовал ряд собственных фрагментов кода, а также различныевводящий в заблуждение код на форумах (ну по моему опыту).

Вот коллекция:

Collection {#263 ▼
  #items: array:3 [▼
    5 => Collection {#224 ▼
      #items: array:10 [▼
        0 => {#213 ▼
          +"id": 1
          +"portfolio_id": 5
          +"type": "Secured Note"
          +"date": "2018-11-18"
          +"inv_amount": "300000"
          +"return_rate": "10%"
          +"payment_amount": "7500"
          +"inv_term": "18 Months"
          +"payment_schedule": "Monthly"
          +"account_info": "US BANK 4532"
          +"pdffiles": null
          +"created_at": "2019-04-19 01:51:53"
          +"updated_at": "2019-04-19 11:53:03"
          +"user_id": 1
          +"hide": null
          +"contract": null
          +"reports": null
          +"taxdocs": null
        }
        1 => {#252 ▶}
        2 => {#253 ▶}
        3 => {#254 ▶}
        4 => {#255 ▶}
        5 => {#256 ▶}
        6 => {#257 ▶}
        7 => {#258 ▶}
        8 => {#259 ▶}
        9 => {#260 ▶}
      ]
    }
    6 => Collection {#261 ▼
      #items: array:1 [▼
        0 => {#218 ▼
          +"id": 2
          +"portfolio_id": 6
          +"type": "Secured Note"
          +"date": "2018-09-15"
          +"inv_amount": "350000"
          +"return_rate": "12%"
          +"payment_amount": "7500"
          +"inv_term": "24 Months"
          +"payment_schedule": "Monthly"
          +"account_info": "US BANK 4532"
          +"pdffiles": null
          +"created_at": "2019-04-19 01:53:46"
          +"updated_at": "2019-04-19 03:14:03"
          +"user_id": 1
          +"hide": null
          +"contract": null
          +"reports": null
          +"taxdocs": null
        }
      ]
    }
    7 => Collection {#262 ▼
      #items: array:1 [▼
        0 => {#238 ▼
          +"id": 3
          +"portfolio_id": 7
          +"type": "Secured Note"
          +"date": "2018-06-11"
          +"inv_amount": "380000"
          +"return_rate": "15%"
          +"payment_amount": "8900"
          +"inv_term": "36 Months"
          +"payment_schedule": "Monthly"
          +"account_info": "US BANK 4532"
          +"pdffiles": null
          +"created_at": "2019-04-19 01:54:45"
          +"updated_at": "2019-04-24 00:38:21"
          +"user_id": 1
          +"hide": null
          +"contract": null
          +"reports": null
          +"taxdocs": null
        }
      ]
    }
  ]

Вот что генерирует его в контроллере:

$grouped = DB::table('funds')
    ->get()
    ->groupBy('portfolio_id');
dd($grouped);

Модель фонда принадлежит портфелю, а модель портфеля имеет много фондов.

Из коллекции у меня есть 3 портфеля.Я пытаюсь вычислить сумму оплаты payment_amount для каждого из 3, сгенерированных из groupBy.

Справка!

1 Ответ

0 голосов
/ 25 апреля 2019

Вы должны использовать groupBy() перед get().Также вам нужно использовать SUM для выбора.

$grouped = DB::table('funds')
    ->select(DB::raw("portfolio_id, SUM(payment_amount)"))
    ->groupBy('portfolio_id')
    ->get();
dd($grouped);

Пожалуйста, взгляните также на https://laravel.com/docs/5.8/queries#aggregates

...