ArrayList()的SilverStripe随机顺序

Ste*_*uev 6 php arraylist silverstripe

我知道我们可以随机排序DataList以下内容:

$example = Example::get()->sort('RAND()');
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试随机排序时,ArrayList它不起作用.我可以在排序ArrayListID DESC,但不能用RAND().

有没有办法ArrayList随机对其项目进行排序?

例:

public function AllTheKits() {
    $kits = Versioned::get_by_stage('KitsPage', 'Live');
    $kitsArrayList = ArrayList::create();

    foreach ($kits as $kit) {
        if ($kit->MemberID == Member::currentUserID()) {
            $kitsArrayList->push($kit);
        }
    }
    return $kitsArrayList;      
}
Run Code Online (Sandbox Code Playgroud)

在一个页面中:

public function getKitsRandom() {
    return $this->AllTheKits()->sort('RAND()');
}
Run Code Online (Sandbox Code Playgroud)

这在带有的模板中不起作用 <% loop KitsRandom %>

Unc*_*ese 4

并不真地。这是我能想到的最好的解决方法:

foreach($myArrayList as $item) {
    $item->__Sort = mt_rand();
}

$myArrayList = $myArrayList->sort('__Sort');
Run Code Online (Sandbox Code Playgroud)