From 023ff2a4c8340e18f2836e9b0d88aab90616ba66 Mon Sep 17 00:00:00 2001 From: Mzhelskiy Maxim Date: Fri, 11 Jan 2013 12:51:16 +0400 Subject: [PATCH] Merge commit 'fa26785460d8c908c466d2b5f28a36aea37690af' --- engine/classes/MapperORM.class.php | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/engine/classes/MapperORM.class.php b/engine/classes/MapperORM.class.php index 53b5b04e..a0ac44a4 100644 --- a/engine/classes/MapperORM.class.php +++ b/engine/classes/MapperORM.class.php @@ -129,9 +129,9 @@ class MapperORM extends Mapper { $sTableName = self::GetTableName($sEntityFull); list($aFilterFields,$sFilterFields)=$this->BuildFilter($aFilter,$oEntitySample); - list($sOrder,$sLimit)=$this->BuildFilterMore($aFilter,$oEntitySample); + list($sOrder,$sLimit,$sGroup)=$this->BuildFilterMore($aFilter,$oEntitySample); - $sql = "SELECT * FROM ".$sTableName." WHERE 1=1 {$sFilterFields} {$sOrder} {$sLimit} "; + $sql = "SELECT * FROM ".$sTableName." WHERE 1=1 {$sFilterFields} {$sGroup} {$sOrder} {$sLimit} "; $aQueryParams=array_merge(array($sql),array_values($aFilterFields)); $aItems=array(); if($aRows=call_user_func_array(array($this->oDb,'select'),$aQueryParams)) { @@ -305,7 +305,23 @@ class MapperORM extends Mapper { } $sLimit="LIMIT {$iBegin}, {$iEnd}"; } - return array($sOrder,$sLimit); + + // Группировка + $sGroup=''; + if (isset($aFilter['#group'])) { + if(!is_array($aFilter['#group'])) { + $aFilter['#group'] = array($aFilter['#group']); + } + foreach ($aFilter['#group'] as $sField) { + $sField = $this->oDb->escape($oEntitySample->_getField($sField),true); + $sGroup.=" {$sField},"; + } + $sGroup=trim($sGroup,','); + if ($sGroup!='') { + $sGroup="GROUP BY {$sGroup}"; + } + } + return array($sOrder,$sLimit,$sGroup); } /** * Список колонок/полей сущности