Php 获取SilverStripe中Page DataObject的父页面

Php 获取SilverStripe中Page DataObject的父页面,php,silverstripe,silverstripe-4,Php,Silverstripe,Silverstripe 4,我正在开发一个SilverStripe项目。现在,我正在尝试在控制器中按ID获取页面对象,如下所示 $currentPage = Page::get()->byID($this->ID); 此外,我还想查看$currentPage的所有父/母。但是我在数据库表中找不到类似于parent\u Page\u id之类的页面的相关列。如何获取页面数据对象的所有父页面?从广义上讲,页面就是SiteTree对象。SiteTree数据库表中存在ParentID列。您可以访问页面的父级,如下所示

我正在开发一个SilverStripe项目。现在,我正在尝试在控制器中按ID获取页面对象,如下所示

$currentPage = Page::get()->byID($this->ID);

此外,我还想查看$currentPage的所有父/母。但是我在数据库表中找不到类似于parent\u Page\u id之类的页面的相关列。如何获取页面数据对象的所有父页面?

从广义上讲,页面就是SiteTree对象。
SiteTree
数据库表中存在
ParentID
列。您可以访问页面的父级,如下所示:

$parent=$currentPage->parent();
您还可以使用
SiteTree::getParent()
获得相同的结果:

$parent=$currentPage->getParent();
如果需要递归获取所有父级,可以在循环中执行,直到
->Parent()
返回falsy


另外,由于
SiteTree
对父/子逻辑使用了
Hierarchy
,因此您还可以使用
get祖先()。请参阅。

由于SiteTree使用父/子逻辑的层次结构,因此您还可以使用
get祖先()。请参阅@wmk谢谢,我已将答案转换为社区wiki并添加了您的建议