我在mysql表中有大约10000条记录,其中包含id,info和ip列。 ip列是空的。我想在页面刷新时一次显示一行。对于显示的每一行,我想存储刷新页面的客户端的IP。因此,无论何时从该IP刷新页面,它都会显示相同的信息。
我希望我解释得很清楚。如何在每次刷新页面时确保它显示正确的行,并且我不会进行额外的mysql查询。
目前我每次打开页面然后过滤它时都会获取所有行,但我知道这样做效率不高。请帮忙
答案 0 :(得分:1)
将iterate()方法与批处理一起使用。
http://docs.doctrine-project.org/en/2.0.x/reference/batch-processing.html
如果您只需要一部分记录,则可以使用setFirstResult($num) and setMaxResults($num)。
答案 1 :(得分:1)
我希望了解你。因此,您希望向已保存的IP显示相同的行:
// Controller...
$ip = $container->get('request')->getClientIp(); // The ip
$em = $this->getDoctrine()->getManager(); // Get the Entity Manager
// First check if the ip has assigned a record
$record = $em->getRepository('AcmeStoreBundle:Records')
->findOneByIp( $ip );
if( !$record ){ // There isn't a IP assigned
$record = $em->getRepository('AcmeStoreBundle:Records')
->findOneBy( array('ip' => null) ); // Get other record to assign
$record->setIp( $ip );
$em->flush(); // Save the ip
}
return new Response('Record info: ' . $record->getInfo() );
在获得相同的IP记录后,第一次没有使用记录。