Changeset 983

Show
Ignore:
Timestamp:
08/14/10 02:40:01 (18 months ago)
Author:
ort
Message:

fix ORM

Location:
trunk
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • trunk/classes/modules/user/User.class.php

    r931 r983  
    183183                return $aUsers; 
    184184        } 
     185         
     186        /** 
     187         * Алиас для корректной работы ORM 
     188         * 
     189         * @param unknown_type $aUserId 
     190         * @return unknown 
     191         */ 
     192        public function GetUserItemsByArrayId($aUserId) { 
     193                return $this->GetUsersByArrayId($aUserId); 
     194        } 
     195         
    185196        public function GetUsersByArrayIdSolid($aUserId) { 
    186197                if (!is_array($aUserId)) { 
  • trunk/engine/classes/Engine.class.php

    r981 r983  
    151151                if($bRunHooks || $sClassName == 'ModuleHook'){ 
    152152                        $sHookPrefix = 'module_'; 
    153                         if($sPluginName = $this->GetPluginName($sClassName)){ 
     153                        if($sPluginName = self::GetPluginName($sClassName)) { 
    154154                                $sHookPrefix .= "plugin{$sPluginName}_"; 
    155155                        } 
    156                         $sHookPrefix .= $this->GetModuleName($sClassName).'_init_'; 
     156                        $sHookPrefix .= self::GetModuleName($sClassName).'_init_'; 
    157157                } 
    158158                 
  • trunk/engine/classes/EntityORM.class.php

    r982 r983  
    7777        } 
    7878         
     79        public function _setData($aData) { 
     80                if(is_array($aData)) { 
     81                        foreach ($aData as $sKey => $val) { 
     82                                if (array_key_exists($sKey,$this->aRelations)) { 
     83                                        $this->aRelationsData[$sKey]=$val; 
     84                                } else { 
     85                                        $this->_aData[$sKey] = $val; 
     86                                } 
     87                        } 
     88                } 
     89        } 
     90         
    7991        public function __call($sName,$aArgs) { 
    8092                $sType=strtolower(substr($sName,0,3)); 
  • trunk/engine/classes/MapperORM.class.php

    r982 r983  
    3232                $sTableName = self::GetTableName($oEntity); 
    3333                $iPrimaryKeyValue=$oEntity->_getDataOne($oEntity->_GetPrimatyKey()); 
    34                 var_dump($iPrimaryKeyValue); 
     34                                 
    3535                $sql = "UPDATE ".$sTableName." SET ?a WHERE ".$oEntity->_GetPrimatyKey()." = ? ";  
    3636                 
  • trunk/engine/classes/ModuleORM.class.php

    r982 r983  
    104104                        $oEntityEmpty=Engine::GetEntity($sEntityFull); 
    105105                        $aRelations=$oEntityEmpty->_getRelations(); 
    106                         $aEntityKeys=array();                    
     106                        $aEntityKeys=array(); 
    107107                        foreach ($aFilter['#with'] as $sRelationName) { 
    108                                 if (!array_key_exists($sRelationName,$aRelations) or !in_array($aRelations[$sRelationName][0],array(EntityORM::RELATION_TYPE_BELONGS_TO,EntityORM::RELATION_TYPE_HAS_ONE))) { 
     108                                $sRelType=$aRelations[$sRelationName][0]; 
     109                                $sRelEntity=$aRelations[$sRelationName][1]; 
     110                                $sRelKey=$aRelations[$sRelationName][2]; 
     111                                 
     112                                if (!array_key_exists($sRelationName,$aRelations) or !in_array($sRelType,array(EntityORM::RELATION_TYPE_BELONGS_TO,EntityORM::RELATION_TYPE_HAS_ONE))) { 
    109113                                        throw new Exception("The entity <{$sEntityFull}> not have relation <{$sRelationName}>"); 
    110114                                } 
    111                                  
     115 
    112116                                /** 
    113117                                 * Формируем список ключей 
    114118                                 */ 
    115119                                foreach ($aEntities as $oEntity) { 
    116                                         $aEntityKeys[$aRelations[$sRelationName][2]][]=$oEntity->_getDataOne($aRelations[$sRelationName][2]); 
     120                                        $aEntityKeys[$sRelKey][]=$oEntity->_getDataOne($sRelKey); 
    117121                                } 
    118                                 $aEntityKeys[$aRelations[$sRelationName][2]]=array_unique($aEntityKeys[$aRelations[$sRelationName][2]]); 
     122                                $aEntityKeys[$sRelKey]=array_unique($aEntityKeys[$sRelKey]); 
     123                                 
    119124                                /** 
    120125                                 * Делаем общий запрос по всем ключам 
    121126                                 */ 
     127                                $oRelEntityEmpty=Engine::GetEntity($sRelEntity); 
    122128                                 
    123                                 $aRelData=$this->GetItemsByArray(array('id'=>$aEntityKeys[$aRelations[$sRelationName][2]]),$aRelations[$sRelationName][1]); 
    124                                 var_dump($aRelData); 
    125                         } 
    126                         /** 
    127                          * Собираем набор 
    128                          */ 
     129                                $sRelModuleName=Engine::GetModuleName($oRelEntityEmpty); 
     130                                $sRelEntityName=Engine::GetEntityName($oRelEntityEmpty); 
     131                                $sRelPluginPrefix=Engine::GetPluginPrefix($oRelEntityEmpty); 
     132                                // ItemsByArrayId - id пока идет костылем, т.к. у стандартных сущностей нет метода _GetPrimatyKey() 
     133                                $aRelData=Engine::GetInstance()->_CallModule("{$sRelPluginPrefix}{$sRelModuleName}_get{$sRelEntityName}ItemsByArrayId",array($aEntityKeys[$sRelKey])); 
     134                                /** 
     135                                 * Собираем набор 
     136                                 */ 
     137                                foreach ($aEntities as $oEntity) { 
     138                                        if (isset($aRelData[$oEntity->_getDataOne($sRelKey)])) { 
     139                                                $oEntity->_setData(array($sRelationName => $aRelData[$oEntity->_getDataOne($sRelKey)])); 
     140                                        } 
     141                                } 
     142                        } 
    129143                         
    130144                }