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