超過1000行的問題我有此查詢將返回我在給定區域內的所有興趣點:Doctrine2具有選擇
$query = $em
->createQuery(
'SELECT f FROM MyApplication\MyBundle\Entity\POI p
WHERE (p.latitude BETWEEN :southEastLatitude AND :norhtWestLatitude) AND
(p.longitude BETWEEN :southEastLongitude AND :norhtWestLongitude)
ORDER BY p.name
');
$query->setParameter(":norhtWestLatitude", $northWestLat);
$query->setParameter(":norhtWestLongitude", $northWestLng);
$query->setParameter(":southEastLatitude", $southEastLat);
$query->setParameter(":southEastLongitude", $southEastLng);
如果我嘗試用小面積訪問(與小的差異PARAMS) ,我成功得到了結果。我想我得到的結果高達1000行......我不太確定。
如果我嘗試用一個更大的區域來訪問,我得到一個空結果...
不知怎的,射擊與大面積的PARAMS相同的查詢,我得到正確的結果集(〜1060行)。
所以我想了解一下學說的限制(甚至Symfony的???我用我的Symfony2項目裏學說),還有什麼?我也試過$query->setMaxResults(999999999);
,但它並沒有幫助...
任何人有同樣的問題?
編輯:也許PHP的內存使用率是很高?我之前和調用getResult後添加這些行:
echo "Memory usage before: " . (memory_get_usage()/1024) . " KB" . PHP_EOL;
echo "Memory usage after: " . (memory_get_usage()/1024) . " KB" . PHP_EOL;
輸出爲:
內存使用後:5964.0625 KB
內存使用後:10019.421875 KB
編輯: 奇怪的測試:
1)如果我與這些參數進行測試:
WHERE
(f.latitude BETWEEN 45.64273082966722 AND 47.29965978937995) AND
(f.longitude BETWEEN 4.93262593696295 AND 9.99999999999999)
我得到923行(正常行爲)
2)如果我改變參數9.999999999999到10.000000000(或某些數目大於9.9999999 ),我在我的應用程序中得到一個空的結果集。 數據庫仍返回923行(爲10.000000000)。
編輯: 我能解決這個問題,這裏討論:https://groups.google.com/d/msg/doctrine-user/qLSon6m4nM4/y5vLztHcbDgJ
app/logs/dev.log中的任何內容?檢查PHP錯誤日誌超過內存限制也許? – nifr
可能是內存問題,並檢查相關實體是否也被拉出。 – Geshan
沒有什麼有趣的記錄在app/logs/dev.log中,並且在php錯誤日誌中沒有記錄。我沒有收到任何錯誤消息,我只是得到一個空的結果集。 – eav