Propel Nested Set与Pagination结合使用

时间:2012-05-08 22:50:37

标签: pagination propel nested-sets

$root = AnimeCommentQuery::create()->findRoot(2);
$html = "<ul>{$root->getComment()}";

foreach ($root->getDescendants() as $post)
{
  $html .= '<li style="padding-left: '.$post->getLevel().' em;">';
  $html .= $post->getComment();
  $html .= ' by '.$post->getIbfMembersRelatedByInsertBy()->getName();
  $html .= "</li>";
}

$html .= "</ul>";
echo $html;

我想对帖子进行分页,但我无法通过以下方式执行此操作:

$root = AnimeCommentQuery::create()->findRoot(2)->paginate(2, 1);

OR

$root = AnimeCommentQuery::create()->paginate(2, 1)->findRoot(2);

可以用推进标准分页来完成吗?怎么样?

1 个答案:

答案 0 :(得分:0)

不知道这是否为时已晚......

首先,您不能使用paginate并在同一查询中查找,它们都是终止方法。

我认为你需要的是这样的:

$comments = AnimeCommentQuery::create()->inTree(2)->orderByBranch()->paginate(2,1);

然后foreach通过Collection。{/ p>

现在你必须要有点聪明,何时关闭和打开列表,检查当前的等级等。第2页以上的顶部和底部也需要考虑一下。祝你好运!

嵌套集API值得进一步研究http://www.propelorm.org/behaviors/nested-set.html#complete_api,得到了相当多的支持。

另请考虑使用->joinWith()在主查询中预先填充getIbfMembersRelatedByInsertBy()