mirror of
https://github.com/Oreolek/ifhub.club.git
synced 2024-07-01 05:55:02 +03:00
fix ORM - теперь при запросах к БД учитываются только реальные поля таблицы
This commit is contained in:
parent
38bdfd6099
commit
038a761555
|
@ -383,6 +383,14 @@ abstract class EntityORM extends Entity {
|
|||
public function _getOriginalData() {
|
||||
return $this->_aOriginalData;
|
||||
}
|
||||
/**
|
||||
* Возвращает данные для списка полей сущности
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function _getDataFields() {
|
||||
return $this->_getData($this->_getFields());
|
||||
}
|
||||
/**
|
||||
* Возвращает список полей сущности
|
||||
*
|
||||
|
|
|
@ -32,7 +32,7 @@ class MapperORM extends Mapper {
|
|||
$sTableName = self::GetTableName($oEntity);
|
||||
|
||||
$sql = "INSERT INTO ".$sTableName." SET ?a ";
|
||||
return $this->oDb->query($sql,$oEntity->_getData());
|
||||
return $this->oDb->query($sql,$oEntity->_getDataFields());
|
||||
}
|
||||
/**
|
||||
* Обновление сущности
|
||||
|
@ -53,7 +53,7 @@ class MapperORM extends Mapper {
|
|||
$sWhere.=' and '.$this->oDb->escape($sField,true)." = ".$this->oDb->escape($oEntity->_getDataOne($sField));
|
||||
}
|
||||
$sql = "UPDATE ".$sTableName." SET ?a WHERE {$sWhere}";
|
||||
return $this->oDb->query($sql,$oEntity->_getData());
|
||||
return $this->oDb->query($sql,$oEntity->_getDataFields());
|
||||
} else {
|
||||
$aOriginalData = $oEntity->_getOriginalData();
|
||||
$sWhere = implode(' AND ',array_map(create_function(
|
||||
|
@ -61,7 +61,7 @@ class MapperORM extends Mapper {
|
|||
'return "{$oDb->escape($k,true)} = {$oDb->escape($v)}";'
|
||||
),array_keys($aOriginalData),array_values($aOriginalData),array_fill(0,count($aOriginalData),$this->oDb)));
|
||||
$sql = "UPDATE ".$sTableName." SET ?a WHERE 1=1 AND ". $sWhere;
|
||||
return $this->oDb->query($sql,$oEntity->_getData());
|
||||
return $this->oDb->query($sql,$oEntity->_getDataFields());
|
||||
}
|
||||
}
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue