1

集合和按需补水
使用集合而不是数组的优点是 Propel 可以按需补水模型对象。使用此功能,您在检索大量结果时永远不会出现内存不足的情况。通过 Model Queries 的 setFormatter() 方法,按需补水非常容易触发:

<?php
 $authors = AuthorQuery::create()
   ->limit(50000)
   ->setFormatter(ModelCriteria::FORMAT_ON_DEMAND)
   ->find();

foreach ($authors as $author) {
  echo $author->getFirstName();
}

1)这里的“水合”是什么意思?
2)集合和数组有什么区别?

资料来源:推进@1.6

4

1 回答 1

3

1.除湿

一种通过仅在需要时用行数据“填充”类/对象来提高性能的方法。

Propel 最初不会从一个非常大的表中执行,而是"SELECT * FROM SomeTable"先触发"SELECT ID FROM SomeTable",然后在循环内,然后执行"SELECT [COLUMS] FROM SomeTable WHERE ID=[CurrentID]",因此是“按需”

2. Collection vs Array Array 只是普通的数组,而 PropelCollection 是 Object 的 Object,它有很多可用的东西,例如:

  • 分页结果
  • 检查奇数或偶数,->isOdd()等。
  • 检查其中的项目数量$object->count()
  • 格式转换->toYAML(), ->toCSV(),->toXML()

集合中的每个项目都是一个 PropelObject,因此您仍然可以->getColumn()在循环内获取数据。文档

于 2016-06-28T13:42:54.720 回答