0

我正在开发一个以 Propel ORM 为模型的 PHP 应用程序。它是通过 Composer 安装的,所有类都正确自动加载。我可以创建查询、访问数据库和检索数据以填充我的页面。好的。

但是我在使用某些方法时遇到了麻烦,例如isLast(). 根据文档,您可以按如下方式使用它:

$books = BookQuery::create()->find();
foreach ($books as $book){
  if($books->isLast()){
    // Do something
  }
}

我什至无法复制这个简单的例子。我已经简化了我的代码以查看它是否有效(使用我自己的表和列名称):

$provincias=ProvinciasQuery::create()->find();
foreach($provincias as $v){
  echo $v->getProvinciasNombre(); // This works!
  if($provincias->isLast()){ // This doesn't :(
    // Do something
  }
}

我总是遇到同样的错误:

致命错误:在 /path/to/my/app/vendor/propel/propel/src/Propel/Runtime/Collection/Collection 中未捕获异常“Propel\Runtime\Exception\BadMethodCallException”并带有消息“调用未定义方法:isLast”。第 558 行的 php

其他方法也一样,例如isEven(),isOdd()isFirst()。方法isEmpty()似乎工作正常。

任何帮助,将不胜感激。

4

1 回答 1

0

在这里找到了解决方案:

$books = BookQuery::create()->find();
$booksLoop = $books->getIterator();
foreach ($booksLoop as $book) {
  if ($booksLoop->isFirst()) echo "First";
}

Propel 2 的官方文档已经过时。我已经在 github 提交了一个问题:https ://github.com/propelorm/Propel2/issues/1314

于 2016-12-14T12:41:22.323 回答