Doktrin ile Symfony 1.4 kullanın ve benim proje index page de Jobeet projesi ile benzer bir sorunu olduğunu fark ettim.
Kategoriler saymak - Sorun sistem kategorisinde başına kullanıcı işleri gösterir ve biz N 1 +2 * N veritabanı sorgularını olan dizin sayfada.
Eğer> 10 kategori varsa, bu çok iyi değil.
Index eylemine at:
$this->categories = Doctrine::getTable('JobeetCategory')->getWithJobs();
Ve her kategori için görünümde
$category->getActiveJobs(15) // 15 here - is active jobs count.
Nedeniyle Doktrin ilişkilere bunu kullanabilirsiniz
$category->getJobeetJobs()
ve ben sayfa başına sadece bir sorgu alırsınız, ama ihtiyaç olarak bu komut bana kategoride, değil 15 için tüm aktif işleri verir. Tabii ki array_slise veya benzer hile yoluyla sonuçlarını sınırlandırmak olabilir, ama herkes bunun nasıl bir tavsiye verebilir?
Temelde böyle MySQL sorgu şey gerekir:
SElECT * FROM category s LEFT JOIN job s2 ON s.id = s2.category_id WHERE (s2.expires_at > '2010-02-17' AND s2.status = 'published') LIMIT 15
Ancak her kategoride sadece işleri DEĞİL, bu sorgunun tüm sonuçları sınırlamak.