月总和 child table 值 laravel
Sum child table value monthly laravel
我在数据库中有 2 个表格
Table安加兰
+----+-------------------+
| id | uraian |
+----+-------------------+
| 1 | Pembangunan Jalan |
| 2 | Material Bangunan |
+----+-------------------+
Table彭格鲁然
+----+-------------+------------+---------+----------+
| 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 |
+----+-------------+------------+---------+----------+
我想显示来自 table pengeluaran monthly
的所有 anggaran 数据和 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();
这是我的 blade
@foreach($anggaran as $angaran)
<tr>
<td>{{$angaran->uraian}}</td>
@foreach($angaran->pengeluaran as $p)
<td>{{$p->sum}}</td>
@endforeach
</tr>
@endforeach
我成功显示了 uraian 但总和没有出现。谁能帮帮我?
在你的控制器中:
$anggaran = Anggaran::with(['pengeluaran'])->get();
在你的blade中可以直接求和;
@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
为了避免在没有$month
索引时在null
上调用sum()
,我在[=17=的第二个参数中传递了一个空集合作为默认值].
我在数据库中有 2 个表格
Table安加兰
+----+-------------------+
| id | uraian |
+----+-------------------+
| 1 | Pembangunan Jalan |
| 2 | Material Bangunan |
+----+-------------------+
Table彭格鲁然
+----+-------------+------------+---------+----------+
| 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 |
+----+-------------+------------+---------+----------+
我想显示来自 table pengeluaran monthly
的所有 anggaran 数据和 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();
这是我的 blade
@foreach($anggaran as $angaran)
<tr>
<td>{{$angaran->uraian}}</td>
@foreach($angaran->pengeluaran as $p)
<td>{{$p->sum}}</td>
@endforeach
</tr>
@endforeach
我成功显示了 uraian 但总和没有出现。谁能帮帮我?
在你的控制器中:
$anggaran = Anggaran::with(['pengeluaran'])->get();
在你的blade中可以直接求和;
@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
@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
为了避免在没有$month
索引时在null
上调用sum()
,我在[=17=的第二个参数中传递了一个空集合作为默认值].