php(推进)中集合和数组有什么区别?

时间:2016-06-28 10:37:25

标签: php arrays orm propel propel2

收藏和按需补水
使用集合而不是数组的优点是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

1 个答案:

答案 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