Postingan lainnya
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