2016-04-13 54 views
0

Tamam, bu yüzden Doctrine ORM (2.5) kullanarak bazı kodları yeniden yazıyorum. Ben nasıl Doktrin QueryBuilder kullanarak bu en iyi uygulamak için hiçbir ipucu varDoctrine QueryBuilder VARLIYOR

SELECT * FROM couples INNER JOIN individuals ON (couples.id = individuals.couple_id) 
GROUP BY couples.id 
HAVING SUM(individuals.date_of_birth <= '1976-01-01') > 0 

:

eski kod böyle bir şey olan bir sorgu oluşturur. Bu çok basitleştirilmiş bir örnektir, gerçek sorgu çok daha uzundur ve hepsi bir eşleşme olan tekil çiftlerin alınmasını sağlamak için SUM(some_condition) > 0'u kullanan birkaç HAVING maddesine sahiptir.

$queryBuilder->having()'u kullanarak Doctrine'de tümcecikler ekleyebilirim, ancak SUM() işlevini kullanarak bunu yapamıyorum. Herhangi bir fikir?

cevap

1

Aslında having birlikte sum kullanarak durdurma şey vardır:

$queryBuilder 
    ->select('couple, individual') 
    ... 
    ->having('sum(individual.date_of_birth) > 0'); 

sorgu oluşturucu sum() fonksiyonu, aslında iki argüman alır ve sen ne değildir matematiksel ifadesini döndürür sonra.

Yukarıdaki örnekte olduğu gibi bir alanda sum kullandığınızda, aslında birleştirme işlevidir.

Durumunuzda akılda tutulması gereken bir başka nokta da, documentation'a göre, her having() çağrısı, önceden ayarlanmış koşulların tümünü geçersiz kılar. Eğer bunlardan çoğunu kullanmak isterseniz, andHaving ve orHaving kullanın.

Umarım bunu açıklar.