2016-12-12 5 views
0

Я разрабатываю приложение PHP с Propel ORM в качестве модели. Он устанавливается через Composer, и все классы автоматически загружаются. Я могу создавать запросы, получать доступ к базе данных и извлекать данные для заполнения моей страницы. Ницца.Методы Propel и Collection

Но у меня возникли проблемы с некоторыми методами, например isLast(). Согласно documentation, вы можете использовать его следующим образом:

$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 
    } 
} 

я получаю всегда ту же ошибку:

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() , isOdd() или isFirst(). Способ isEmpty(), похоже, работает нормально.

Любая помощь будет оценена по достоинству.

ответ

0

Найдено решение here:

$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