【问题标题】: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

【问题讨论】:

    标签: php arrays orm propel propel2


    【解决方案1】:

    1.Hidration

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

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

    2。集合与数组 Array 只是普通的数组,而 PropelCollection 是 Object 的 Object,它有很多可用的东西,例如:

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

    集合中的每个项目都是一个 PropelObject,因此您仍然可以在循环中使用 -&gt;getColumn() 获取数据。 Documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-08
      • 2010-11-05
      • 2014-06-26
      • 2013-11-19
      • 2012-09-03
      • 2017-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多