Yazmış olduğum uygulamaya facebook'taki gibi notifikasyon bölümü yapmak istiyorum. Facebook'a bakarsanız sol üstte sadece giriş yapan kullanıcı ile ilgili notififkasyonları gösteriyor. Sağ üst köşede ise arkadaşları ile ilgili tüm notifikasyonları listeliyor.

Ben kendi uygulamam için veritabanındaki notifikasyon tablolarını oluşturdum. Facebook'taki sağ üst köşedeki gibi arkadaşları ile ilgili tüm notifikasyonları listeleme kısmının sql'ini yazabildim, fakat facebook'taki sol üst köşedeki gibi sadece kendisiyle ilgili notifikasyonları listeleme kısmı ile ilgili sql'i yazamadım.

Benim yazdığım uygulama da facebook'taki arkadaşların yerine takip ettikleri kullanıcılar var.

Tablo yapım

notifications
    ->notify_id
    ->user_id (işlemi yapan kullanıcı id)
    ->notify_type(yeni-icerik, yorum, takip, beğenme vs...)
    ->notify_date
    ->object_id (içerik id, yorum id, kendisini takip eden kullanıcı id, beğendiği içerik id vs...)

Kullanıcının takip ettiği kişilerin yaptığı tüm notifikasyonlarını çeken sorguyu şu şekilde yazdım.

SELECT *
FROM (notifications X)
LEFT JOIN users USERS ON X.user_id=USERS.user_id
LEFT JOIN posts POSTS ON X.object_id=POSTS .post_id AND X.notify_type='new-post' 
LEFT JOIN users OBJECT_USERS ON X.object_id=OBJECT_USERS.user_id AND X.object_id=1 AND X.notify_type='follow'
LEFT JOIN comments COMMENTS ON X.object_id=COMMENTS.comment_id AND X.notify_type='comment'
LEFT JOIN posts COMMENTS_POSTS ON COMMENTS.posts_id=COMMENTS_POSTS.posts_id
WHERE X.user_id IN (SELECT following_id FROM user_followings WHERE user_id=1)
ORDER BY X.notify_date DESC

Yukarıdaki sorguda bir kullanıcının takip ettiği diğer kullanıcının yapıtığı tüm notifikasyonları çekiyor. Örneğin X kullanıcısı Y kullanıcısının paylaştığı içeriği beğendiğinde doğal olarak X kullanıcısını takip eden bütün kullanıcılara "X. kullanıcısı Y kullanıcısının paylaştığı içeriği beğendi" şeklinde notifikasyon görünecek. Fakat ben istiyorumki bu notifikasyon sadece Y kullanıcısına görünsün. Ama beğenme dışında "yorum yapma, takip etme, yeni içerik ekleme" gibi birden fazla notifikasyonlar da olduğundan tek sorgu da yazamadım.

Tek sorguda kullanıcının kendisi ile ilgili olan notifikasyonları bu tablo yapısı ile çekmem mümkün mü?

Umarım derdimi anlatabilmişimdir.

soruldu: 14 Eyl '12, 09:39

alexander's gravatar image

alexander
185172023
cevap kabul oranı: 33%

değiştirildi: 14 Eyl '12, 09:40

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183

Bu soruya ilk cevap veren sen ol!
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×144
×19

Soruldu: 14 Eyl '12, 09:39

Görüntüleme: 773 kez

Son güncelleme: 14 Eyl '12, 09:40

powered by BitNami OSQA