diff --git a/application/common/controller/Backend.php b/application/common/controller/Backend.php index 76d4ee834fb7d67007cc325fdac4d97cc29b0575..86f9c70a0537dfa9bc124f8b7cfe83ec06f7c28d 100644 --- a/application/common/controller/Backend.php +++ b/application/common/controller/Backend.php @@ -508,11 +508,27 @@ class Backend extends Controller if (is_array($adminIds)) { $this->model->where($this->dataLimitField, 'in', $adminIds); } + $fields = is_array($this->selectpageFields) ? $this->selectpageFields : ($this->selectpageFields && $this->selectpageFields != '*' ? explode(',', $this->selectpageFields) : []); - $datalist = $this->model->where($where) - ->order($order) - ->page($page, $pagesize) - ->select(); + + //如果有primaryvalue,说明当前是初始化传值,按照选择顺序排序 + if ($primaryvalue !== null) { + $primaryvalue = array_unique(is_array($primaryvalue) ? $primaryvalue : explode(',', $primaryvalue)); + $primaryvalue = implode(',', array_map([$this->model->getConnection(), 'quote'], $primaryvalue)); + + $datalist = $this->model->where($where) + ->orderRaw("FIELD(`{$primarykey}`, {$primaryvalue})") + ->page($page, $pagesize) + ->field($this->selectpageFields) + ->select(); + } else { + $datalist = $this->model->where($where) + ->order($order) + ->page($page, $pagesize) + ->field($this->selectpageFields) + ->select(); + } + foreach ($datalist as $index => $item) { unset($item['password'], $item['salt']); if ($this->selectpageFields == '*') {