Laravel雄辩有一个游标方法,允许您使用游标迭代数据库记录,这将只执行一个查询。在处理大量数据时,可以使用游标方法大大减少内存使用(请参阅https://laravel.com/docs/5.4/eloquent#retrieving-models)。
CakePHP 3有一个高级的ORM,是否有类似于Laravel中的游标方法?似乎没有在书中提到:https://book.cakephp.org/3.0/en/orm.html
发布于 2017-05-17 13:28:50
我不知道在Laravel中cursor()和非cursor()的使用究竟有什么不同(除了明显的),但是在CakePHP中,您可能需要的是Query::bufferResults(),分别是Query::enableBufferedResults() (截至CakePHP 3.4)。
$query->bufferResults(false)$query->enableBufferedResults(false)禁用结果缓冲将停止结果集在内存中的缓冲,对于MySQL,它还将禁用MYSQL_ATTR_USE_BUFFERED_QUERY。
未缓冲的结果集只能迭代一次,结果不能缓存/序列化。此外,对于包含在单独查询中检索的关联的查询(对于hasMany和belongsToMany总是如此),不能禁用缓冲。
另请参阅
https://stackoverflow.com/questions/44024706
复制相似问题