laravel join dan outputnya [ laravel whereHas relation ]

permisi minta bantuannya master,

//saya punya table artikel id title 1 pertama

//table gambar id img artikel_id 1 satu.jpg 1 2 dua.jpg 1 3 tiga.jpg 1

$datas = DB::table('artikel')->join('gambar', 'artikel.id', '=', 'gambar.artikel_id')
->select('artikel. * ' , 'gambar. * ')->get();

bagaimana cara saya mengeluarkan artikel pertama dan tiga gambar tersebut ? //saya pakai ini

@foreach($datas as $data)
 {{$data->title}}
 {{$data->img}}
@endforeach

dan hasilnya title muncul tiga kali. pertama satu.jpg pertama dua.jpg pertama tiga.jpg

saya mau hasilnya seperti ini

pertama

satu.jpg dua.jpg tiga.jpg

//sebelumnya saya sudah bisa mengeluarkan output nya dengan relation. //tapi saya masih bingung jika dengan joinnya gan Terimakasih

avatar harry_putter
@harry_putter

144 Kontribusi 31 Poin

Diperbarui 7 tahun yang lalu

8 Jawaban:

kalo memang nampilinnya sudah berhasil dan cuma masalah gruping by title aja, coba gini, buat contoh siapa tau sama ama yang di maksud

// FOREACH DATA
$data = array(
  array('pertama', 'satu.jpg'),
  array('pertama', 'dua.jpg'),
  array('pertama', 'tiga.jpg'),
  array('kedua', 'empat.jpg'),
  array('kedua', 'lima.jpg'),
  array('kedua', 'enam.jpg'),
);

$header = '';
foreach ($data as $row) {
  if($row[0] != $header){
    $header = $row[0];
    echo "<br>".$row[0]."<br>";
  }
  echo $row[1]."<br>";
}

nanti hasilnya gini :

avatar gunalirezqimauludi
@gunalirezqimauludi

350 Kontribusi 243 Poin

Dipost 7 tahun yang lalu

pas banget gan, ane juga lagi nyari yang kaya beginian, @gunalirezqimauludi, bisa dijelaskan tidak pseudo-code nya gan, soalnya masih belum paham please gan.,

avatar momoji
@momoji

108 Kontribusi 44 Poin

Dipost 7 tahun yang lalu

itu cuma looping data, dan buat variable penampung, jadi kodisi awal header nya null/kosong

proses looping, saat looping cek header == row[0] / 'pertama' ga? , ooh engga karna header nya itu null ga sama dengan 'pertama' maka, header nya di inisiasikan / di set value nya dengan value 'pertama', lalu tampilkan 'echo pertama', lalu diluar if itu tampilkan.. $row[1] alias namagambar.jpg nya, nah saat looping ke 2 itu di cocokin lagi header sama dengan 'pertama' ga value nya? karna tadi header udh di set value nya 'pertama' maka yah $header == $row[0] sama dengan 'pertama' == 'pertama', maka true jadi di skip.. cetaknya gambarnya aja tanpa header..

semoga ngerti yang dimaksud, kurang bisa jelasinnya.. hahaha

avatar gunalirezqimauludi
@gunalirezqimauludi

350 Kontribusi 243 Poin

Dipost 7 tahun yang lalu

oh iya iya, ane paham gan, thanks gan,

avatar momoji
@momoji

108 Kontribusi 44 Poin

Dipost 7 tahun yang lalu

sebelumnya saya coba di group by tittle yg keluar gambarnya cuma satu. ok gan nanti di coba. thankz ya...

avatar harry_putter
@harry_putter

144 Kontribusi 31 Poin

Dipost 7 tahun yang lalu

gax bisa brow, bingun / susah di implementasikan dengan join....

avatar harry_putter
@harry_putter

144 Kontribusi 31 Poin

Dipost 7 tahun yang lalu

masalah dengan join nya gmna? bukannya joinnya udah? yang hasil joinnya jadi

pertama satu.jpg pertama dua.jpg pertama tiga.jpg

avatar gunalirezqimauludi
@gunalirezqimauludi

350 Kontribusi 243 Poin

Dipost 7 tahun yang lalu

Jawaban Terpilih

nah iya gan, tapi code tadi masih bingung saya implement di laravel nya, sekarang udah jadi pake ini ,,, masih pake relation lagi.

$artikel  = Artikel::whereHas('gambar',//relation hasMany di model Artikel
                            function ($query) {
                                $query->where('artikel_id', '!=', null);
                            })->paginate(3);

sebenernya magsud saya, hanya memunculkan artikel yang mempunyai gambar gan,,, dan saya coba pakai join, soalnya saya cari2 where di relation belum nemu2...

avatar harry_putter
@harry_putter

144 Kontribusi 31 Poin

Dipost 7 tahun yang lalu

Login untuk ikut Jawaban