Silverstripe合并GroupedLists

Chr*_*ner 5 php silverstripe

我正在尝试返回一个GroupedList包含来自两个页面的信息dataobjects.有没有一种简单的方法将两个列表合并在一起?

public function getGroupedContent()
{
    $dataobjects = GroupedList::create(FileNetObject::get());
    $pages = GroupedList::create($this->Children());

    $result = ??;


    return $result;
}
Run Code Online (Sandbox Code Playgroud)

ArrayList合并失败一样标准的array_merge-我建议最好从查询把它变成一个单一的前合并在一起的结果GroupedList

Mar*_*inn 1

在不了解更多情况的情况下,最简单的方法是:

return array_merge($dataobjects->toArray(), $pages->toArray());
Run Code Online (Sandbox Code Playgroud)

要在模板中显示上述内容,您当然需要将其包装在另一个 ArrayList 中。

更新:如果您想对列表进行分组(这当然就是您首先使用 GroupedList 的原因),您需要在合并数组之前执行此操作。更像:

return array_merge($dataobjects->GroupBy('Author')->toArray(), $page->GroupBy('Author')->toArray());
Run Code Online (Sandbox Code Playgroud)