子表值月度总和

我在数据库上有2个表格

安加兰餐桌

+----+-------------------+
| id |      uraian       |
+----+-------------------+
|  1 | Pembangunan Jalan |
|  2 | Material Bangunan |
+----+-------------------+

表Pengeluaran

+----+-------------+------------+---------+----------+
| id | anggaran_id |   waktu    | jumlah  | penerima |
+----+-------------+------------+---------+----------+
|  1 |           2 | 2019-10-12 | 1000000 | Dadang   |
|  2 |           2 | 2019-10-28 | 1500000 | Bambang  |
|  3 |           2 | 2019-11-12 | 3000000 | Tono     |
|  4 |           2 | 2019-12-10 | 2500000 | Agus     |
|  5 |           2 | 2019-12-20 | 1500000 | Bajo     |
+----+-------------+------------+---------+----------+

我想每月显示Pengeluaran表中所有带有sum jumlah的安加拉数据

我想要的结果在这里

+--------------------+---------+----------+------+-------+-----+------+------+--------+-----------+---------+----------+----------+
| Uraian             | January | February | March| April | May | June | July | August | September | October | November | December |
+--------------------+---------+----------+------+-------+-----+------+------+--------+-----------+---------+----------+----------+
|  Pembangunan Jalan |         |          |      |       |     |      |      |        |           |         |          |          |
|  Material Bangunan |         |          |      |       |     |      |      |        |           | 2500000 | 3000000  | 4000000  |
+--------------------+---------+----------+------+-------+-----+------+------+--------+-----------+---------+----------+----------+

我使用的代码有很多关系,但是总和没有显示

这里是我的控制器

$anggaran = Anggaran::with(['pengeluaran' => function($query){
          $query->select(
              DB::raw('sum(jumlah) as sum'),DB::raw("Monthname(waktu) as month"))
          ->groupBy('month');
         }])
        ->get();

这是我的刀片

@foreach($anggaran as $angaran)
      <tr>
        <td>{{$angaran->uraian}}</td>
        @foreach($angaran->pengeluaran as $p)
        <td>{{$p->sum}}</td>
        @endforeach
      </tr>
 @endforeach

我成功显示了uraian,但未出现总和。谁能帮我吗?

songkings 回答:子表值月度总和

在您的控制器中:

$anggaran = Anggaran::with(['pengeluaran'])->get();

您可以在刀片中直接对其进行求和;

@foreach($anggaran as $angaran)
      <tr>
        <td>{{$angaran->uraian}}</td>
        <td>{{$angaran->pengeluaran->sum('jumlah') }}</td>
      </tr>
 @endforeach
,

借助收藏的帮助,应该不会太困难:

$anggaran = Anggaran::with(['pengeluaran' => function ($query) {
    $query->select('anggaran_id','jumlah')
          ->selectRaw("month(waktu) as month"); // Get the month number so it's easier to sort
}])
->get();
@foreach($anggaran as $angaran)
  <tr>
    <td>{{ $angaran->uraian }}</td>
    @foreach($angaran->pengeluaran->groupBy('month') as $month => $pengeluaran)
      <td>{{ $pengeluaran->sum('jumlah') }}</td>
    @endforeach
  </tr>
@endforeach

在没有pengeluaran的行中显示0

@foreach($anggaran as $angaran)
  <tr>
    <td>{{ $angaran->uraian }}</td>
    @foreach(range(1,12) as $month)
      <td>
        {{ $angaran->pengeluaran->groupBy('month')->get($month,collect())->sum('jumlah') }}
      </td>
    @endforeach
  </tr>
@endforeach

为了避免在没有sum()索引时在null上调用$month,我在get()的第二个参数中传递了一个空集合作为默认值。

本文链接:https://www.f2er.com/3155198.html

大家都在问