Postingan lainnya
Buku Ini Koding!
Baru!
Buku ini akan jadi teman perjalanan kamu belajar sampai dapat kerjaan di dunia programming!
Cara jumlah(sum) di laravel
Jadi saya memmbuat suatu aplikasi dimana saya dapat mengisi data poin untuk klasemen, sbb:
View:
<table class="table table-hover table-sm" id="table">
<tr>
<th><b>No</b></th>
<th><b>Pereli</b>
</th><th>R1</th>
<th>R2</th>
<th>R3</th>
<th>R4</th>
<th>R5</th>
<th>Total</th>
<th width="180px">Kelola</th>
</tr>
$total = 0;
@foreach($klasemenperelisprints as $klasemenperelisprint)
<tr>
<td><b>{{++$i}}</b></td>
<td>{{$klasemenperelisprint->perelis->nama_peserta}}</td>
<td>{{$klasemenperelisprint->poin_overall1}}</td>
<td>{{$klasemenperelisprint->poin_overall2}}</td>
<td>{{$klasemenperelisprint->poin_overall3}}</td>
<td>{{$klasemenperelisprint->poin_overall4}}</td>
<td>{{$klasemenperelisprint->poin_overall5}}</td>
<td class="jumlah"></td>
<td>
<a class="btn btn-sm btn-success" href="{{route('klasemenperelisprint.show', $klasemenperelisprint->id)}}">Detil Poin</a>
</form>
</td>
</tr>
@endforeach
</table>
</div>
Nah, yang jadi masalahnya adalah bagaimana cara menjumlahkan poin_overall 1-5 tersebut, dan menampilkannya ke <td class="jumlah"></td> ?
Sebelumnya, saya sudah mencoba untuk melakukannya di Controller seperti ini:
public function index()
{
$klasemenperelisprints = klasemenperelisprint::all()
->select('sum(klasemenperelisprints.poin_overall1*klasemenperelisprint.poin_overall2) AS poin_total');
return view('klasemenperelisprint.index', compact ('klasemenperelisprints'))
->with('i', (request()->input('page',1) -1) *10);
}
Cuma, muncul error ini: Method Illuminate\Database\Eloquent\Collection::select does not exist.
2 Jawaban:
mungkin karena method all() itu kan kalo di mysql jadi "SELECT * ...", terus ditambah pake method select(), jadi method select()nya gak ada
Kalau kolom point overal statis, belajar accessor dan mutator saja, nanti dimodelnya dibuat custom attribute (misal point_total),
<pre> protected $appends = ['point_total'];
public function getPointTotalAttribute() { return $this->poin_overall1+$this->poin_overall2+...; } </pre> di controller: $model->all();
di view tinggal panggil langsung saja $klasemenpwelisprint->point_total