查询已归档页面的SiteTree

时间:2017-11-28 03:30:59

标签: php silverstripe

我的网站中有几个页面处于存档状态但无法看到Silverstripe用来确定网页处于存档状态的内容。

是否有一个函数可用于确定页面是否处于存档状态,如

foreach (SiteTree::get() as $page) {
    echo $page->isArchived();
}

或者我可以通过查询返回所有已存档页面的某种属性?

1 个答案:

答案 0 :(得分:1)

您可以使用回调过滤掉已存档的页面,如下所示:

$allPages = Versioned::get_including_deleted('SiteTree');
$deletedPages = $allPages->filterByCallback(function($page) {
    // Doesn't exist on either stage or live
    return $page->getIsDeletedFromStage() && !$page->getExistsOnLive();
});

上面的代码正是CMS中的过滤器所做的(例如,当您过滤存档页面时)

我想这对数据库查询也是可行的,但它不是对字段的简单检查,但很可能是由多个子查询组成的查询。