Tuhaf davranışı alıyorum Sorguda setMaxResults'u çağırdığımda, gerçek değerin ne olduğu önemli değil, max sayısını "2" olarak görmek ister gibi görünüyor. Ben setMaxResults
satırını açıklama yaparken
function findMostRecentByOwnerUser(\Entities\User $user, $limit)
{
echo "2: $limit<br>";
$query = $this->getEntityManager()->createQuery('
SELECT t
FROM Entities\Thread t
JOIN t.messages m
JOIN t.group g
WHERE
g.ownerUser = :owner_user
ORDER BY m.timestamp DESC
');
$query->setParameter("owner_user", $user);
$query->setMaxResults(4);
echo $query->getSQL()."<br>";
$results = $query->getResult();
echo "3: ".count($results);
return $results;
}
, ben 6 sonuçlar elde ederler. Onu bıraktığımda en son 2 sonucu elde ederim. Oluşturulan SQL kodunu phpMyAdmin'de çalıştırdığımda en yeni 4 sonucu elde ederim. oluşturulan SQL, başvuru için şöyledir:
SELECT <lots of columns, all from t0_>
FROM Thread t0_
INNER JOIN Message m1_ ON t0_.id = m1_.thread_id
INNER JOIN Groups g2_ ON t0_.group_id = g2_.id
WHERE g2_.ownerUser_id = ?
ORDER BY m1_.timestamp DESC
LIMIT 4
Düzenleme:
the DQL "Limit" documentation okurken, ben rastladım şu: En sorgu fetch- içeriyor
ise Sonuç sınırlama yöntemlerini belirterek koleksiyona katılmayı beklediğiniz gibi çalışmıyor. Max Sonuçlarını Ayarla veritabanı sonuç satırlarının sayısını kısıtlar, ancak getirilen birleştirilmiş koleksiyonlar söz konusu olduğunda, bir kök öğe birçok satırda görünebilir ve belirtilen sonuç sayısından daha az bir şekilde nemlendirilebilir.
Getirdiğim koleksiyona sahip olmadığımdan eminim. Getirilen bir koleksiyonun SELECT t, m FROM Threads JOIN t.messages
gibi bir şey yaptığım yer olduğu izleniminin altındayım. Bunu anlamamda yanlış mıyım?
Sadece doktrin 2.2 ile aynı sorunu fark ettim. Bunun için bir çözüm olmadığına şaşıyorum ... – Gregoire