作者 Karson
提交者 Gitee

!225 多选字段存储和编辑时按选择顺序存储及显示

Merge pull request !225 from HID丨emotion/adv_multi_order
@@ -533,11 +533,27 @@ class Backend extends Controller @@ -533,11 +533,27 @@ class Backend extends Controller
533 if (is_array($adminIds)) { 533 if (is_array($adminIds)) {
534 $this->model->where($this->dataLimitField, 'in', $adminIds); 534 $this->model->where($this->dataLimitField, 'in', $adminIds);
535 } 535 }
  536 +
536 $fields = is_array($this->selectpageFields) ? $this->selectpageFields : ($this->selectpageFields && $this->selectpageFields != '*' ? explode(',', $this->selectpageFields) : []); 537 $fields = is_array($this->selectpageFields) ? $this->selectpageFields : ($this->selectpageFields && $this->selectpageFields != '*' ? explode(',', $this->selectpageFields) : []);
537 - $datalist = $this->model->where($where)  
538 - ->order($order)  
539 - ->page($page, $pagesize)  
540 - ->select(); 538 +
  539 + //如果有primaryvalue,说明当前是初始化传值,按照选择顺序排序
  540 + if ($primaryvalue !== null) {
  541 + $primaryvalue = array_unique(is_array($primaryvalue) ? $primaryvalue : explode(',', $primaryvalue));
  542 + $primaryvalue = implode(',', array_map([$this->model->getConnection(), 'quote'], $primaryvalue));
  543 +
  544 + $datalist = $this->model->where($where)
  545 + ->orderRaw("FIELD(`{$primarykey}`, {$primaryvalue})")
  546 + ->page($page, $pagesize)
  547 + ->field($this->selectpageFields)
  548 + ->select();
  549 + } else {
  550 + $datalist = $this->model->where($where)
  551 + ->order($order)
  552 + ->page($page, $pagesize)
  553 + ->field($this->selectpageFields)
  554 + ->select();
  555 + }
  556 +
541 foreach ($datalist as $index => $item) { 557 foreach ($datalist as $index => $item) {
542 unset($item['password'], $item['salt']); 558 unset($item['password'], $item['salt']);
543 if ($this->selectpageFields == '*') { 559 if ($this->selectpageFields == '*') {