php(propel)中的集合和数组有啥区别?
Posted
技术标签:
【中文标题】php(propel)中的集合和数组有啥区别?【英文标题】:what is the difference between collection and array in php (propel)?php(propel)中的集合和数组有什么区别? 【发布时间】:2016-06-28 10:37:25 【问题描述】:收集和按需补水 使用集合而不是数组的优点是 Propel 可以按需对模型对象进行水合。使用此功能,您在检索大量结果时永远不会出现内存不足的情况。通过 Model Queries 的 setFormatter() 方法,按需补水非常容易触发:
<?php
$authors = AuthorQuery::create()
->limit(50000)
->setFormatter(ModelCriteria::FORMAT_ON_DEMAND)
->find();
foreach ($authors as $author)
echo $author->getFirstName();
1) 这里的“Hydration”是什么意思? 2) 集合和数组有什么区别?
来源:Propel @1.6
【问题讨论】:
【参考方案1】:1.Hidration
一种通过在需要时用行数据“填充”类/对象来提高性能的方法。
Propel 不会从一个非常大的表中执行"SELECT * FROM SomeTable"
,而是首先触发"SELECT ID FROM SomeTable"
,然后在循环内执行"SELECT [COLUMS] FROM SomeTable WHERE ID=[CurrentID]"
,因此是“按需”
2。集合与数组 Array 只是普通的数组,而 PropelCollection 是 Object 的 Object,它有很多可用的东西,例如:
分页结果 检查奇数或偶数、->isOdd()
等。
检查其中的项目数$object->count()
格式转换->toYAML()
,->toCSV()
,->toXML()
集合中的每个项目都是一个 PropelObject,因此您仍然可以在循环中使用 ->getColumn()
获取数据。 Documentation
【讨论】:
以上是关于php(propel)中的集合和数组有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章