超过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