我正在使用包含一些ID的数组的where子句来执行DataList :: get()。
$result = DataList::get('MyObject')->where('ID IN(' .implode(',',$idArr). ')');
我的数组看起来像
array
0 => string '1'
1 => string '12'
2 => string '2'
3 => string '11'
我想要DataList的结果:get()以$ idArr的相同顺序排序/排序。我试过了
$masteries = Mastery::get()->where('ID IN(' .implode(',',$idArr). ')')->sort('ID', implode(',',$idArr));
但这不起作用。有没有办法使用DataList执行此操作,还是我必须执行自定义查询?
答案 0 :(得分:7)
为了完整性,应该注意OP询问了使用DataList
执行此操作的方法,因此编写此查询的ORM方式(完成标准排序行为)将是:
$masteries = Mastery::get()
->filter(array('ID' => $idArr))
->sort('ID', 'ASC'); // See the docblock for DataList::sort()
答案 1 :(得分:3)
你试过了吗?
$masteries = Mastery::get()
->where('ID IN(' . implode(',',$idArr) . ')')
->sort('field(ID,' . implode(',',$idArr) . ') ASC');