Example #1
0
 public function loadMultiple(array $idTypeList)
 {
     $idListByTable = [];
     $keyListById = [];
     foreach ($idTypeList as $key => $idType) {
         $type = (int) $idType['type'];
         $id = $idType['id'];
         $tableName = $this->_getTableName($type);
         $idListByTable[$tableName][] = $id;
         foreach ($id as &$idPart) {
             $idPart = (string) $idPart;
         }
         $idSerialized = 'table:' . $tableName . ';id:' . serialize($id);
         $keyListById[$idSerialized][] = $key;
     }
     $resultSet = [];
     foreach ($idListByTable as $tableName => $idList) {
         $idColumnList = array_keys($idList[0]);
         $result = CM_Db_Db::selectMultiple($tableName, '*', $idList)->fetchAll();
         foreach ($result as $row) {
             $id = [];
             foreach ($idColumnList as $idColumn) {
                 $id[$idColumn] = $row[$idColumn];
             }
             $idSerialized = 'table:' . $tableName . ';id:' . serialize($id);
             if (isset($keyListById[$idSerialized])) {
                 foreach ($keyListById[$idSerialized] as $key) {
                     $resultSet[$key] = $row;
                 }
             }
         }
     }
     return $resultSet;
 }