Sorguları Birçok kullanıcı fotoğrafları ve kendi yorumlarını yukarı çekin.

3 Cevap php

Ne yapmaya çalışıyorum w profilin yorumlarına / profil bilgisi yukarı çekmek. Beklendiği gibi ben her şeyi olsun. Hiçbir hata Dizi mükemmel biçimlendirilmiş, geri döndü. Benim endişe çalıştırılan sorguları olduğunu. Onun fotoğraf (sorgunun başlangıç ​​aşağıdaki kodu açıklamalarda dikkat) almak için her kimlik için bir sorgu çalıştırır. Ben bu user_id ile fotoğrafları almak için tek yoldur sanırım? Ayrı sorgu tüm? Daha iyi bir yolu var mı?

Ben 40 + yorumlarla bir profil hayal ediyorum ve bunu hayal etmek korkutucu. Memcached gelir bu nerede?

$profile = $this->Profile->find('first', array(
                            'conditions' => array('Profile.url' => $url),
                            'contain' => array(
                                    'User' => array(
                                            'fields' => array(
                                                    'User.id','User.name'
                                            ),
                                            'Photo' => array(
                                                    'fields' => array(
                                                            'Photo.thumbnail','Photo.image'
                                                    )
                                            )
                                    ),
                                    'Comment' => array(
                        'User' => array(
                            'fields' => array(
                                'User.name'
                            ),
                            'Photo' => array( // right here
                                'fields' => array(
                                    'Photo.thumbnail'
                                )
                            )
                        )
                    )
                            )
                    )); 

edit:

Ben açıkçası bir kullanıcı tablo var, hem de bir yorum tablo olarak. Ben de URL kullanıcılarının görüntülere, yabancı anahtar = User_id depolayan bir resmi tablo var. I, belirli bir profilden tüm Yorumlar sorgulamak ve Comment.user_id iken Yani, ben de onun user_id tarafından Fotoğraf tablodan Photo.thumbnail kapmak gerekir.

3 Cevap

Bunu çok daha hızlı LEFT JOIN kullanarak yapabilirsiniz.

edited kodu daha iyi soru (- değil bir iki sol katılır ihtiyaç vardır) yanıt düzenlendi.

SELECT c.text, i.profiles, p.photo_url
FROM comments AS c
LEFT JOIN profiles AS i on c.profile_id = i.id
LEFT JOIN photos AS p ON i.id = p.user_id
WHERE c.post_id = 32
LIMIT 20

Bu sadece bir genel SQL ama olur:

  1. (yorum tablodaki) Bütün yorumları çekmek madde 32 bellowing
  2. Yorumlarınız için açıklama afiş id eşleşen profilleri masaya katılmak bıraktı
  3. ilk 20 yorum çekin

Ve sadece tek bir sorgu ile size + ilişkili profilleri tüm 30 yorum çeker.

Umarım yardımcı olur!

Sen dizi anahtarı 'bağlantı' ile dizi anahtarına 'içeren' yerine, ve sol sizin için katıldı oluşturur - bkz linkable behavior. Dezavantajı bağlantılı tüm ilişkiler belongsTo ilişkiye hasOne veya hasMany gelen olmasıdır.

Ayrıca "kek yolu" katılır yapıyor hakkında Bakery Nate makalesine bakmak isteyebilirsiniz.

http://bakery.cakephp.org/articles/view/quick-tip-doing-ad-hoc-joins-in-model-find