Modificado GenericDao para suportar interferência durante a escolha de...

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 { ...@@ -47,13 +47,7 @@ abstract class GenericDao {
*/ */
public function inserir($modelo) { public function inserir($modelo) {
try { try {
// extrai o objeto $modelo para o array $data usando hydrator $data = $this->getAttributesPersist($modelo);
$data = $this->hydrator->extract($modelo);
// remove as colunas autoincrementadas pelo SQL
foreach($this->getAutoIncrementedColumns() as $value){
unset($data[$value]);
}
// prepara as strings para o comando SQL // prepara as strings para o comando SQL
$chaves = array_keys($data); $chaves = array_keys($data);
$colunas = implode(',', $chaves); $colunas = implode(',', $chaves);
...@@ -87,11 +81,7 @@ abstract class GenericDao { ...@@ -87,11 +81,7 @@ abstract class GenericDao {
public function atualizar($modelo, array $where = array()) { public function atualizar($modelo, array $where = array()) {
try { try {
$data = $this->hydrator->extract($modelo); $data = $this->getAttributesPersist($modelo);
foreach($this->getAutoIncrementedColumns() as $value){
unset($data[$value]);
}
$chaves = array_keys($data); $chaves = array_keys($data);
$coluna = ''; $coluna = '';
...@@ -180,6 +170,8 @@ abstract class GenericDao { ...@@ -180,6 +170,8 @@ abstract class GenericDao {
$objeto = new $modelClassName; $objeto = new $modelClassName;
$value = $this->makeDatabaseAttrClassAttr($value);
$this->hydrator->hydrate($value, $objeto); $this->hydrator->hydrate($value, $objeto);
$resultSet[] = $objeto; $resultSet[] = $objeto;
} }
...@@ -187,8 +179,20 @@ abstract class GenericDao { ...@@ -187,8 +179,20 @@ abstract class GenericDao {
return $resultSet; return $resultSet;
} catch (PDOException $e) { } 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(); 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 to comment