Postingan lainnya
Buku Ini Koding!
Baru!
Buku ini akan jadi teman perjalanan kamu belajar sampai dapat kerjaan di dunia programming!
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..
5 Jawaban:
Saya belum coba kode ini dan langsung saya tulis di sini, mungkin kurang lebih intinya seperti ini:
<pre>
$bidang = Bidang::with('rencana')->get(); // eager load
// output @foreach ($bidang as $item) {{ $item->rencana->nama_rencana }} @endforeach
</pre>
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)
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.
-
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>
-
Kalau dr Model Bidang , sama seperti jawaban @Biobii tp ada sedikit perbaikan <pre> // Controller $bidang = Bidang::with('rencana')->get();
// View <div class="contain-app"> @foreach ($bidang as $data) <b>{{$data->nama}}</b>
@foreach ($data-&gt;rencana as $rc)
&lt;ol&gt;
&lt;li&gt;{{$rc-&gt;nama_rencana}}&lt;/li&gt;
&lt;/ol&gt;
@endforeach
@endforeach
</div> </pre>
Mantapp.. terimakasih banyak Mas sangat membantu sekali..
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