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

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..

avatar Supriono
@Supriono

84 Kontribusi 16 Poin

Diperbarui 4 tahun yang lalu

5 Jawaban:

Saya belum coba kode ini dan langsung saya tulis di sini, mungkin kurang lebih intinya seperti ini:

<pre>

$bidang = Bidang::with('rencana')-&gt;get(); // eager load

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

</pre>

avatar Biobii
@Biobii

74 Kontribusi 34 Poin

Dipost 5 tahun 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)

avatar Supriono
@Supriono

84 Kontribusi 16 Poin

Dipost 5 tahun yang lalu

Jawaban Terpilih

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 <a href='https://laravel.com/docs/5.7/collections#method-groupby'>https://laravel.com/docs/5.7/collections#method-groupby</a>

  2. Kalau dr Model Bidang , sama seperti jawaban @Biobii tp ada sedikit perbaikan <pre> // Controller $bidang = Bidang::with('rencana')-&gt;get();

// View &lt;div class="contain-app"&gt; @foreach ($bidang as $data) &lt;b&gt;{{$data-&gt;nama}}&lt;/b&gt;

	@foreach ($data-&amp;gt;rencana as $rc)
		&amp;lt;ol&amp;gt;
		  &amp;lt;li&amp;gt;{{$rc-&amp;gt;nama_rencana}}&amp;lt;/li&amp;gt;
		&amp;lt;/ol&amp;gt;
	@endforeach
@endforeach

&lt;/div&gt; </pre>

avatar Rismal
@Rismal

131 Kontribusi 105 Poin

Dipost 5 tahun yang lalu

Mantapp.. terimakasih banyak Mas sangat membantu sekali..

avatar Supriono
@Supriono

84 Kontribusi 16 Poin

Dipost 5 tahun 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

avatar rizkyaryak
@rizkyaryak

4 Kontribusi 0 Poin

Dipost 4 tahun yang lalu

Login untuk ikut Jawaban