收藏和按需补水
使用集合而不是数组的优点是Propel可以按需水合模型对象。使用此功能,在检索大量结果时,您永远不会缺少内存。可以通过Model Queries的setFormatter()方法获得,按需水合很容易触发:
<?php
$authors = AuthorQuery::create()
->limit(50000)
->setFormatter(ModelCriteria::FORMAT_ON_DEMAND)
->find();
foreach ($authors as $author) {
echo $author->getFirstName();
}
1)&#34; Hydration&#34;是什么意思?在这?
2)集合与数组有什么区别?
来源:Propel @1.6
答案 0 :(得分:2)
<强> 1.Hidration 强>
通过在您需要时使用行数据“填充”您的类/对象来提高性能的方法。
而不是从一个非常大的表中执行"SELECT * FROM SomeTable"
,Propel最初将关闭"SELECT ID FROM SomeTable"
,然后在循环内,然后执行"SELECT [COLUMS] FROM SomeTable WHERE ID=[CurrentID]"
,因此“按需”
<强> 2。 Collection vs Array 数组只是普通的数组,而PropelCollection是一个对象的对象,它有很多可用的东西,例如:
->isOdd()
等$object->count()
->toYAML()
,->toCSV()
,->toXML()
集合中的每个项目都是PropelObject,因此您仍然可以在循环内使用->getColumn()
获取数据。 Documentation