Silverstripe 更改 DataList 的 class
Silverstripe changing the class of a DataList
我有一个 Holder class returns 一个 BaseClass 类型的 DataList。这些对象实际上是 SearchClass 对象。如何转换 DataList 以便我可以按 SearchClass 字段进行筛选。
class SearchClass extends BaseClass(){
public static $db = array('myField' => 'Int');
}
abstract class Holder{
abstract protected function myList();
}
$holder = new ConcreteHolder();
$holder->myList()->filter('myField',1);
最简单的方法是:
class Holder extends DataObject {
public function myList(){
return SearchClass::get()->filter('baseField', 'aValue');
}
}
经过更多时间后,这是我想出的解决方案。
public function convert($list){
$ids = $list->filter('ClassName', 'SearchClass')->getIDList();
return SearchClass::get->byIDs($ids);
}
我有一个 Holder class returns 一个 BaseClass 类型的 DataList。这些对象实际上是 SearchClass 对象。如何转换 DataList 以便我可以按 SearchClass 字段进行筛选。
class SearchClass extends BaseClass(){
public static $db = array('myField' => 'Int');
}
abstract class Holder{
abstract protected function myList();
}
$holder = new ConcreteHolder();
$holder->myList()->filter('myField',1);
最简单的方法是:
class Holder extends DataObject {
public function myList(){
return SearchClass::get()->filter('baseField', 'aValue');
}
}
经过更多时间后,这是我想出的解决方案。
public function convert($list){
$ids = $list->filter('ClassName', 'SearchClass')->getIDList();
return SearchClass::get->byIDs($ids);
}