Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, preciso de ajuda pra fazer um update com varias tabelas ao mesmo tempo.
Meu método CREATE está assim:
//Método de Inserção
function create() {
//Busca os itens e monta um Array Lista para cada.
$this->set('cidades', $this->Cidade->find('list'));
$this->set('cargos', $this->Cargo->find('list'));
$this->set('departamentos', $this->Departamento->find('list'));
$this->set('unidades', $this->Unidade->find('list'));
$this->set('ramals', $this->Ramal->find('list'));
$this->set('fisicas', $this->Fisica->find('list'));
if(!empty($this->data)):
//Salva o endereço antes de salvar a Pessoa.
$salva_endereco = $this->Endereco->save($this->data);
if (!empty($salva_endereco)):
/*
* Faz a busca pelo ID do Endereço que foi salvo anteriormente e joga no campo endereco_id
* que está na tabela de Pessoa
*/
$this->data['Pessoa']['endereco_id'] = $this->Endereco->id;
//Salva a Pessoa antes de salvar Funcionario
$salva_pessoa = $this->Pessoa->save($this->data);
if (!empty($salva_pessoa)):
//salva pessoa fisica
$this->data['Fisica']['pessoa_id'] = $this->Pessoa->id;
$salva_pf = $this->Fisica->save($this->data);
$this->data['Funcionario']['pessoa_id'] = $this->Pessoa->id;
//Salva funcionario!!!!
$salva_funcionario = $this->Funcionario->save($this->data);
if(!empty($salva_funcionario) && !empty($salva_pf)):
$this->data['User']['funcionario_id'] = $this->Funcionario->id;
//Salva usuário!
$salva_user = $this->User->save($this->data);
if(!empty($salva_user)):
$this->Session->setFlash('Registro inserido com sucesso!');
$this->redirect('read/');
endif;
endif;
endif;
else:
$this->Session->setFlash('Erro ao salvar, consulte o Administrador.');
endif;
endif;
}
Minha VIEW de UPDATE está assim (está mostrando todos os dados corretamente na pagina):
<h1> Update de Pessoas </h1>
<?php
$session->flash('flash');
echo $form->create('Funcionario', array('url' => array('controller' => 'funcionarios', 'action' => 'update')));
echo "<span style='font-size: 26px; color: blue'> Dados Pessoais: </span>";
foreach($funcionarios as $funcionario):
echo $form->input('Pessoa.nome', array('type' => 'text', 'size' => '50', 'value' => $funcionario['Pessoa']['nome']));
echo $form->input('Pessoa.telefone', array('type' => 'text', 'size' => '30', 'value' => $funcionario['Pessoa']['telefone']));
echo $form->input('Pessoa.email', array('type' => 'text', 'size' => '30', 'value' => $funcionario['Pessoa']['email']));
echo $form->input('Fisica.rg', array('type' => 'text', 'size' => '30', 'value' => $funcionario['Pessoa']['Fisica']['rg']));
echo $form->input('Fisica.cpf', array('type' => 'text', 'size' => '30', 'value' => $funcionario['Pessoa']['Fisica']['cpf']));
echo "<span style='font-size: 26px; color: blue'> Endereço: </span>";
echo $form->input('Endereco.rua', array('type' => 'text', 'size' => '50', 'value' => $funcionario['Pessoa']['Endereco']['rua']));
echo $form->input('Endereco.bairro', array('type' => 'text', 'size' => '30', 'value' => $funcionario['Pessoa']['Endereco']['bairro']));
echo $form->input('Endereco.complemento', array('type' => 'text', 'size' => '30', 'value' => $funcionario['Pessoa']['Endereco']['complemento']));
echo $form->input('Endereco.numero', array('type' => 'text', 'size' => '10', 'value' => $funcionario['Pessoa']['Endereco']['numero']));
echo $form->input('Endereco.cidade_id', array('value' => $funcionario['Pessoa']['Endereco']['Cidade']['id']));
echo "<span style='font-size: 26px; color: blue'> Funcionário: </span>";
echo $form->input('Funcionario.cargo_id', array('value' => $funcionario['Cargo']['id']));
echo $form->input('Funcionario.unidade_id', array('value' => $funcionario['Departamento']['id']));
echo $form->input('Funcionario.departamento_id', array('value' => $funcionario['Unidade']['id']));
echo $form->input('Funcionario.ramal_id', array('value' => $funcionario['Ramal']['ramal']));
echo "<span style='font-size: 26px; color: blue'> Usuário: </span>";
echo $form->input('User.username', array('type' => 'text', 'size' => '25', 'value' => $funcionario['User']['username']));
echo $form->input('User.password', array('type' => 'text', 'size' => '10', 'value' => $funcionario['User']['password']));
echo $form->input('User.email', array('type' => 'text', 'size' => '30', 'value' => $funcionario['User']['email']));
endforeach;
echo $form->end('Atualizar');
echo $html->link('Listagem de Pessoas', 'read/');
?>
E por fim, meu UPDATE, que está salvando novos registros ao invés de atualizar, está assim:
function update($id = null) {
$this->set('funcionarios', $this->Funcionario->findAllById($id));
$this->set('cidades', $this->Cidade->find('list'));
$this->set('cargos', $this->Cargo->find('list'));
$this->set('departamentos', $this->Departamento->find('list'));
$this->set('unidades', $this->Unidade->find('list'));
$this->set('ramals', $this->Ramal->find('list'));
$data = $this->Funcionario->findById($id);
$idPessoa = $data['Funcionario']['pessoa_id'];
$idEndereco = $data['Pessoa']['endereco_id'];
$idFisica = $data['Pessoa']['Fisica']['id'];
$idUser = $data['User']['id'];
$idFuncionario = $data['Funcionario']['id'];
if($this->Endereco->id == $idEndereco):
$this->Endereco->update($this->data);
if($this->Pessoa->id == $idPessoa):
$this->Pessoa->update($this->data);
pr($this->data);
echo "Pessoa->save";
if($this->Pessoa->Fisica->id == $idFisica):
$this->Fisica->update($this->data);
endif;
if($this->Funcionario->id == $idFuncionario):
$this->Funcionario->update($this->data);
if($this->User->id == $idUser):
$this->User->update($this->data);
$this->Session->setFlash('Registro alterado com sucesso!');
$this->redirect('read/');
else:
$this->Session->setFlash('Erro ao alterar, consulte o administrador!');
$this->redirect('read/');
endif;
endif;
endif;
endif;
}
Alguma alma bondosa poderia me dizer como deve ficar o update nesse caso?
Obrigado!
Carregando comentários...