当我使用祖先约束执行<?php
echo '<ul>';
$files = ['text-1.htm', 'text-2.htm', 'text-3.htm'];
foreach($files as $file) {
if (file_exists($file)) {
$file_clean = explode('.', $file);
$file_clean = str_replace('-', ' ', $file_clean[0]);
$file_clean = ucfirst($file_clean);
echo '<li><a class="button" href="' . $file . '">' . $file_clean . '</a></li>';
}
}
echo '</ul>';
?>
时,似乎我获得了该祖先密钥的所有实体以及它所属的所有祖先。
在这种情况下,我使用祖先关系来表示同质树(所有节点由相同类型表示;每个级别立即一致)。我使用的所有ID都是全局唯一的,我在每个实体上都写了父ID(除了它在祖先路径中)。
由于祖先检索返回的数据太多(所有级别都在及以下,而不仅仅是直接级别;文档没有提到这个和其他几个怪癖),我需要添加一个过滤器确保我回到目前的水平。
所以,问题在于效率与get()
与ancestor().filter()
之间是否存在差异,因为这些对我来说都会产生相同的结果。
感谢。
答案 0 :(得分:4)
只有filter()
最终是一致的,而ancestor().filter()
则非常一致。
正如您所提到的,您需要通过索引属性进行过滤,以获得树的特定级别。