Cara mengambil semua id user yang membuat komentar pada forum (laravel)

saya sedang membuat notifikasi untuk komentar pada forum. saya ingin ketika user A membuat komentar pada topik maka user B, C, dll yang membuat komentar pada topik yg sama menerima notifikasi bahwa user A telah mengomentari topik yang diikuti oleh user B,C,.... akan tetapi saya mengalami kendala untuk mengmbil id dari semua user yg berkomentar. Saya coba melakukan foreach untuk semua komentar, tapi masalahnya ketika user B atau C sudah membuat lebih dari 1 komentar notifikasinya d terkirim sebanyak jumlah komentar user tersebut.

foreach($post->comments as $comment){
    if($user != $comment->user_id && $post_owner != $comment->user_id){
         Notification::create([
             'user_id' => $comment->user_id, //target notif di kirim
             'post_id' => $post_id,
             'commenter_id' => $user,
             'message' => 'pesan notif',
             'status'  => '1'
        ]);
     }
 }
avatar Supriono
@Supriono

84 Kontribusi 16 Poin

Diperbarui 1 tahun yang lalu

1 Jawaban:

Jawaban Terpilih

<div>kalau maksudnya cuman pengen ngasih sekali notif ya cukup 1 baris aja di tambahin.</div><pre>break</pre><div><br>di dalam if nya sesudah bikin notification.<br><br>Edit:<br>Memang gak perlu menggunakan break.<br>Inti nya ingin memberi notification ke user selain diri nya kan?<br>Ada banyak cara</div><pre>//Dengan membuat variabel tambahan bwt nyimpen $been_notified = [] foreach($post-&gt;comments as $comment){ if($user != $comment-&gt;user_id &amp;&amp; $post_owner != $comment-&gt;user_id){ if(!isset($been_notified[$comment-&gt;user_id])){ $been_notified[$comment-&gt;user_id] = true; Notification::create([ .. .

// Atau disaring terlebih dahulu. Bisa pake foreach, array_filter, atau array_unique // Disini nyontohin pake array_unique dengan array_column foreach(array_unique( array_column($post-&gt;comments, 'user_id') ) as $user_id ){ if($user != $user_id){ Notification::create([ .. . <br></pre><div><br></div>

avatar GrennKren
@GrennKren

62 Kontribusi 47 Poin

Dipost 1 tahun yang lalu

Tanggapan

maksud saya masing2 user yang berkomentar mendapat 1 notif mas, kalo pake break berarti proses perulangannya berhenti ketika kondisi if terpenuhi dong? saya belum coba sih

Kalau gitu liat jawaban ku yg kuedit

thanks mas..

Login untuk ikut Jawaban