2

我正在使用包含一些 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 来做到这一点,还是我必须做一个自定义查询?

4

2 回答 2

7

为了完整起见,应该注意 OP 询问了一种方法来做到这一点,DataList因此编写此查询的 ORM 方式(完成标准排序行为)将是:

$masteries = Mastery::get()
    ->filter(array('ID' => $idArr))
    ->sort('ID', 'ASC'); // See the docblock for DataList::sort()
于 2016-04-07T03:13:42.903 回答
3

你有没有尝试过:

$masteries = Mastery::get()
    ->where('ID IN(' . implode(',',$idArr) . ')')
    ->sort('field(ID,' . implode(',',$idArr) . ') ASC');
于 2013-06-19T19:58:43.837 回答