SilverStripe получает по идентификатору в точном порядке

#php #sql #silverstripe

#php #sql #silverstripe

Вопрос:

Предположим, у вас есть массив ключей

 $key_list = array(3, 6, 2);
  

И вы хотите получить записи из определенной таблицы, используя эти ключи в качестве идентификаторов (ГДЕ ID = id_from_key_list)

 Foo::get()->byIDs($key_list);
  

Это возвращает строки с идентификаторами, которые соответствуют строкам в $key_list (3, 6 и 2), но не в таком порядке.

Как нам поддерживать тот же порядок при получении этих элементов?

Ответ №1:

Что вам может понадобиться сделать, так это запустить цикл foreah идентификаторов и поместить каждый объект Foo в ArrayList

 $aFooList = ArrayList::create(); 
foreach ($key_list as $key_list_id){
   $oFoo = Foo::get()->byID($key_list_id);
   $aFooList->push($oFoo); 
}
return $aFooList;