Daftar dan Belajar Sekarang!

Menampilkan data table dan Mengelompokannya berdasarkan relasi mengunakan foreach (laravel 5.4)

foto Supriono
65 Kontribusi 6 Coto
8 bulan yang lalu
Saya Punya 2 table pada database yaitu table "bidang" dan table "rencana". Masing2 relasinya seperti ini : bidang->hasMany->rencana rencana->belongsTo->bidang Penjelasannya dalam satu bidang bisa ada banyak renca dan masing-masing dari rencana ini hanya bisa memiliki 1 bidang. Pertanyaannya : 1. Apakah Relasi saya ini sudah tepat? 2. Bagaimana cara menampilkannya di view dengan mengelompokan setiap rencana pada bidangnya masing2..? Saya sudah coba menampilkannya dengan cara seperti ini :
<div class="contain-app">
	@foreach ($rencana as $data)
		<button class="accordion">{{$data->bidang->nama}}</button>
		<div class="panel-bidang">
		  <p>{{$data->nama_rencana}}</p>
		</div>
	@endforeach
</div>
Cara itu menampilkan data seperti ini di view : 1. BIDANG A -Rencana 1 2. BIDANG A -Rencana 2 3. BIDANG B -Rencana 1 4. BIDANG B -Rencana 2 Nomer 1 dan nomer 2 bidangnya sama tapi rencananya berbeda begitu juga dengan nomor 3 dan 4, agar terlihat lebih rapih Saya ingin bisa menampilkan data seperti ini : 1. BIDANG A - Rencana 1 - Rencana 2 - dst.. 2. BIDANG B - Rencana 1 - Rencana 2 - dst.. Barangkali ada yang bisa membantu, Jazakallah..

Tag: laravel php

✔ Forum ini sudah terjawab


Jawaban
foto Cristal
104 Kontribusi 86 Coto
8 bulan yang lalu
Untuk mendapatkan hasil seperti itu kamu bebas mau ngambil data dr Model Rencana ataupun Model Bidang, sama-sama bisa di gunakan tegantung nnti kamu mau pilih yg mana. 1. Kalau dr Model Rencana kamu bisa gunakan fitur Collection Laravel, silahkan pelajari dokumentasi ini https://laravel.com/docs/5.7/collections#method-groupby 2. Kalau dr Model Bidang , sama seperti jawaban @Biobii tp ada sedikit perbaikan
// Controller
$bidang = Bidang::with('rencana')->get(); 

// View
<div class="contain-app">
	@foreach ($bidang as $data)
		<b>{{$data->nama}}</b>

		@foreach ($data->rencana as $rc)
			<ol>
			  <li>{{$rc->nama_rencana}}</li>
			</ol>
		@endforeach
	@endforeach
</div>
answered icon
foto Biobii
74 Kontribusi 33 Coto
8 bulan yang lalu
Saya belum coba kode ini dan langsung saya tulis di sini, mungkin kurang lebih intinya seperti ini:
$bidang = Bidang::with('rencana')->get(); // eager load

// output
@foreach ($bidang as $item)
    {{ $item->rencana->nama_rencana }}
@endforeach

foto Supriono
65 Kontribusi 6 Coto
8 bulan yang lalu
Mas Biobii trimaksih jawabannya, sudah saya coba tapi error (2/2) ErrorException Property [nama_rencana] does not exist on this collection instance. (View: C:\xampp\htdocs\sobat-desa\resources\views\keuangan\rpjm.blade.php)

foto Cristal
104 Kontribusi 86 Coto
8 bulan yang lalu
Untuk mendapatkan hasil seperti itu kamu bebas mau ngambil data dr Model Rencana ataupun Model Bidang, sama-sama bisa di gunakan tegantung nnti kamu mau pilih yg mana. 1. Kalau dr Model Rencana kamu bisa gunakan fitur Collection Laravel, silahkan pelajari dokumentasi ini https://laravel.com/docs/5.7/collections#method-groupby 2. Kalau dr Model Bidang , sama seperti jawaban @Biobii tp ada sedikit perbaikan
// Controller
$bidang = Bidang::with('rencana')->get(); 

// View
<div class="contain-app">
	@foreach ($bidang as $data)
		<b>{{$data->nama}}</b>

		@foreach ($data->rencana as $rc)
			<ol>
			  <li>{{$rc->nama_rencana}}</li>
			</ol>
		@endforeach
	@endforeach
</div>

foto Supriono
65 Kontribusi 6 Coto
8 bulan yang lalu
Mantapp.. terimakasih banyak Mas sangat membantu sekali..

foto rizkyaryak
3 Kontribusi 0 Coto
1 minggu yang lalu
saya juga mengalami error yang sama seperti : Property [kriteria] does not exist on this collection instance. Apakah function harus di deklarasikan ke dalam controller? saya membuat relasi many to many melalui Model public function kriteria(){ return $this->belongsToMany(Kriteria::class); } mohon bisa dibantu


Login untuk diksusi di forum sekolah koding