From 742f5f1e77f69391ad99eacbdc6854cdb2c42fed Mon Sep 17 00:00:00 2001 From: songchenxuan Date: Tue, 14 Nov 2023 12:00:10 +0800 Subject: [PATCH] * Finish task #105944. --- module/pivot/model.php | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/module/pivot/model.php b/module/pivot/model.php index b224165e51..e2fb4139a7 100644 --- a/module/pivot/model.php +++ b/module/pivot/model.php @@ -1575,7 +1575,7 @@ class pivotModel extends model } } - if($slice != 'noSlice') $columnSQL = "select $groupList,`$slice`,$columnSQL from ($sql) tt" . $connectSQL . $groupSQL . ",tt.`$slice`" . $orderSQL . ",tt.`$slice`"; + if($slice != 'noSlice') $columnSQL = "select $groupList,`$slice`,$columnSQL from ($sql) tt" . $connectSQL . $groupSQL . ",tt.`$slice`"; if($slice == 'noSlice') $columnSQL = "select $groupList,$columnSQL from ($sql) tt" . $connectSQL . $groupSQL . $orderSQL; } @@ -1590,7 +1590,7 @@ class pivotModel extends model } $cols = $this->getTableHeader($columnRows, $column, $fields, $cols, $sql, $langs, $column['showOrigin']); - if($slice != 'noSlice') $columnRows = $this->processSliceData($columnRows, $groups, $slice, $uuName); + if($slice != 'noSlice') $columnRows = $this->processSliceData($columnRows, $groups, $sql, $slice, $uuName); $columnRows = $this->processShowData($columnRows, $groups, $column, $showColTotal, $uuName); $rowIndex = 0; @@ -1646,6 +1646,26 @@ class pivotModel extends model return array($data, $configs); } + /** + * Get sql field options. + * + * @param string $sql + * @param string $slice + * @access public + * @return array + */ + public function getSliceList($sql, $slice) + { + $sliceList = array(); + $rows = $this->dao->query($sql)->fetchAll(); + foreach($rows as $row) + { + $sliceList[$row->{$slice}] = $row->{$slice}; + } + + return $sliceList; + } + /** * InitVarFilter. * @@ -1985,10 +2005,9 @@ class pivotModel extends model * @access public * @return array */ - public function processSliceData($columnRows, $groups, $slice, $uuName) + public function processSliceData($columnRows, $groups, $sql, $slice, $uuName) { - $sliceList = array(); - foreach($columnRows as $rows) $sliceList[$rows->{$slice}] = $rows->{$slice}; + $sliceList = $this->getSliceList($sql, $slice); $index = 0; $sliceRows = array();