Doktrin: çok-çok ilişkili bir veya daha fazla öğe ile ilgili elemanları seçin

2 Cevap php

Ben çok-çok mesaj ile ilgili bir kategori sistemi var. Nasıl bir veya daha fazla mesaj ile ilgili olan bu kategorilerin bir listesini seçebilirsiniz?

$q = Doctrine_Query::create()
     ->from('Category c')
     ->where('<DONT KNOW WHAT TO WRITE>')
     ->select('c.name');

2 Cevap

DQL Bu tutarlarının oluşturun:

SELECT c.* 
FROM category c 
INNER JOIN category_post_rel cpr ON c.id = cpr.category_id;

EDIT:

DQL eşdeğeri:

Doctrine_Query::create()
->select('c.name')
->from('Category c')
->innerJoin('c.Posts');

Ne yazık ki aynı zamanda Post tablo katılacak. Sen Category modeline ek alanı post_count kullanmayı düşünmelisiniz. Onun değeri kategorinin ilişkisi sayısı eşit olmalıdır. Bu, bu ve birçok diğer sorunları için çok yaygın bir çözümdür (gerçekten hızlı nedenidir)) 'dir.

    ->where('post_id = \'CURRENT_POST\'')

Ben Doktrin Sorgu için sözdizimi bilmiyorum, yani bu sadece bir tahmin. Kontrol etmek istediğiniz yazı ile CURRENT_POST değiştirin.