每月汇总子表值laravel

每月汇总子表值laravel,laravel,parent-child,Laravel,Parent Child,我在数据库上有两个标签 表Anggaran +----+-------------------+ | id | uraian | +----+-------------------+ | 1 | Pembangunan Jalan | | 2 | Material Bangunan | +----+-------------------+ +----+-------------+------------+---------+----------+ | id | ang

我在数据库上有两个标签

表Anggaran

+----+-------------------+
| id |      uraian       |
+----+-------------------+
|  1 | Pembangunan Jalan |
|  2 | Material Bangunan |
+----+-------------------+
+----+-------------+------------+---------+----------+
| 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

+----+-------------------+
| id |      uraian       |
+----+-------------------+
|  1 | Pembangunan Jalan |
|  2 | Material Bangunan |
+----+-------------------+
+----+-------------+------------+---------+----------+
| 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表中的所有anggaran数据和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
@foreach($anggaran作为$angaran)
{{$angaran->Urian}
@foreach($angaran->pengeluaran作为$p)
{{$p->sum}
@endforeach
@endforeach
我成功展示了Urian,但sum没有出现。有人能帮我吗?

在您的控制器中:

$anggaran = Anggaran::with(['pengeluaran'])->get();
在你的刀刃上,你可以直接求和

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

在集合的帮助下,应该不会太难:

$anggaran=anggaran::with(['pengeluaran'=>函数($query){
$query->select('anggaran_id','jumlah')
->选择raw(“month(waktu)as month”);//获取月份号以便更容易排序
}])
->get();
@foreach($anggaran作为$angaran)
{{$angaran->Urian}
@foreach($angaran->pengeluaran->groupBy('month')作为$month=>$pengeluaran)
{{$pengeluaran->sum('jumlah')}
@endforeach
@endforeach
在没有pengeluaran的行中显示0

@foreach($anggaran作为$angaran)
{{$angaran->Urian}
@foreach(范围(1,12)为$month)
{{$angaran->pengeluaran->groupBy('month')->get($month,collect())->sum('jumlah')}
@endforeach
@endforeach

为了避免在没有
$month
索引时在
null
上调用
sum()
,我在
get()

的第二个参数中传递了一个空集合作为默认值,如何在没有任何pengeluaran的月份显示sum值0?