2016-12-12 13 views
0

Propel ORMをモデルにしたPHPアプリケーションを開発しています。これはComposer経由でインストールされ、すべてのクラスが正しく自動ロードされます。クエリーを作成し、データベースにアクセスし、データを取得して自分のページに移入することができます。ニース。PropelとCollectionのメソッド

しかし、私はisLast()のようないくつかの方法に問題があります。 documentationによると、次のようにあなたがそれを使用することができます。

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

を私もこの単純な例を複製することはできません。私はそれが(私自身のテーブルと列の名前で)動作するかどうかを確認するために、自分のコードを単純化しています

Fatal error: Uncaught exception 'Propel\Runtime\Exception\BadMethodCallException' with message 'Call to undefined method: isLast' in /path/to/my/app/vendor/propel/propel/src/Propel/Runtime/Collection/Collection.php on line 558

同じisEven()のような他の方法で発生します:

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

私はいつも同じエラーが出ます、isOdd()またはisFirst()。方法isEmpty()は正常に動作するようです。

ご協力いただければ幸いです。ソリューションhere見つかり

答えて

0

:Propelの2のための

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

公式ドキュメントは時代遅れです。私はすでにgithubで問題を提出しています:https://github.com/propelorm/Propel2/issues/1314