Modificado GenericDao para suportar interferência durante a escolha de atributos…

Modificado GenericDao para suportar interferência durante a escolha de atributos que serão colocadas no objetos e nos que serão colocados no banco de dados
parent 70e43175
......@@ -47,13 +47,7 @@ abstract class GenericDao {
*/
public function inserir($modelo) {
try {
// extrai o objeto $modelo para o array $data usando hydrator
$data = $this->hydrator->extract($modelo);
// remove as colunas autoincrementadas pelo SQL
foreach($this->getAutoIncrementedColumns() as $value){
unset($data[$value]);
}
$data = $this->getAttributesPersist($modelo);
// prepara as strings para o comando SQL
$chaves = array_keys($data);
$colunas = implode(',', $chaves);
......@@ -87,11 +81,7 @@ abstract class GenericDao {
public function atualizar($modelo, array $where = array()) {
try {
$data = $this->hydrator->extract($modelo);
foreach($this->getAutoIncrementedColumns() as $value){
unset($data[$value]);
}
$data = $this->getAttributesPersist($modelo);
$chaves = array_keys($data);
$coluna = '';
......@@ -180,6 +170,8 @@ abstract class GenericDao {
$objeto = new $modelClassName;
$value = $this->makeDatabaseAttrClassAttr($value);
$this->hydrator->hydrate($value, $objeto);
$resultSet[] = $objeto;
}
......@@ -187,8 +179,20 @@ abstract class GenericDao {
return $resultSet;
} catch (PDOException $e) {
throw new \Exception("Erro ao inserir:{$e->getMessage()}");
throw new \Exception("Erro ao recuperar:{$e->getMessage()}");
}
}
protected function makeDatabaseAttrClassAttr(array $value){
return $value;
}
protected function getAttributesPersist($modelo){
$data = $this->hydrator->extract($modelo);
foreach($this->getAutoIncrementedColumns() as $value){
unset($data[$value]);
}
return $data;
}
protected abstract function getNomeTabela();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment