Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Matheus Brito

Problema com VO

Recommended Posts

Comecei a utilizar VO, porém surgiu o seguinte problema:

 

Tenho meu VO de Paciente e esse vo leva dois collections que são telefone e enderecos, pois o paciente pode ter mais de um telefone e mais de um endereco.

 

<?php
class PacienteVO{

	public $idPaciente;
	public $nomePaciente;
	public $dataNascimento;
	public $observacoes;
	//Collection
	public $telefones=array();
	public $enderecos= array();
	var $_explicitType = "vo.PacienteVO";
	
}
?>

Ate ai tranqilo porém minha user interface, requer que eu cadastre todos de vez por exemplo:

Eu cadastro os dados do paciente preenchos os telefones e os enderecos e depois eu insiro no banco, tudo de vez. Dai pensei criar um metodo na minha classe de servico do php, que faca isso. Dai criei fiz o cadastro do paciente, so que tipo preciso cadastrar os telefones, mas como posso cadastrar mais de um telefone no php sendo que to trabalhando com VO dessa forma:

 

 

public function cadastrarPacientes($arrPaciente,$arrTelefones){
.
. // Efetuei o cadastro do paciente já e ja recuperei o id
.

// Agora preciso cadastrar os telefones

$dadosTel = new TelefoneVO();

$dadosTel->idTelefone = $arrTelefones['idTelefone'];
		
		$dadosTel->Paciente_idPaciente = $lastId;
		
		$total = count($arrTelefones);
		for($i=0;$i<$total;$i++){
		$dadosTel->telefone = $arrTelefones['telefone']; //Preciso iterar aqui pra poder pegar todos os telefones
		$dadosTel->tipo = $arrTelefones['tipo'];//Preciso iterar aqui pra poder pegar todos os tipos
		$sql = "insert into Telefone(telefone,tipo,Paciente_idPaciente) values('{$dadosTel->telefone}','{$dadosTel->tipo}',{$dadosTel->Paciente_idPaciente})"; // e logico preciso aqui tb pra poder insrir todos
		}



}

Só que desse modo não funciona, porque preciso fazer o código que ta dentro do for iterar pelo $i e isso não ta sendo feito, como vou fazer: $exemplo[$i]???? Trabalhando com objetos???

 

Esse VO, é problema.

 

Abs se alguem puder ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se entendi bem, esse "$arrTelefones" é um array com objetos do tipo 'TelefoneVO', certo?

 

então, você poderia fazer dessa forma:

 

$total = count($arrTelefones);
for($i=0;$i<$total;$i++){
                $dadosTel->telefone = $arrTelefones[$i]->telefone; 
                $dadosTel->tipo = $arrTelefones[$i]->tipo;
                $sql = "insert into Telefone(telefone,tipo,Paciente_idPaciente) values('{$dadosTel->telefone}','{$dadosTel->tipo}',{$dadosTel->Paciente_idPaciente})"; 
           
}

 

isso deve dar

 

 

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade esse $arrTelefones, é que talvez esetja o problema, me ajuda aqui no seguinte, tenho no meu VO no flex de paciente igual o do php logico, no array de telefones, tenho que inserir todos os telefones e tipos, dai pensei no seguinte:

 

 

var pac:PacienteVO = new PacienteVO();

//telefones é meu array

//aqui vai ter um for

pac.telefones.push(gridTelefones.dataProvider.telefones);

pac.telefones.push(gridTelefones.dataProvider.tipo);

 

Ou seja to tentando inserir no vetor dessa forma, pra depois mandar esse vetor la pro php e inserir, mas axo que nao ta funcionando, da um help ai como eu devo preencher esse atributo do VO de pacientes.

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

é tem um errinho ai, você teria que add um objeto com as propriedades do VO, algo assim:

 

 

 


var _tel = gridTelefones.dataProvider[i].telefones
var _tip =  gridTelefones.dataProvider[i].tipo

pac.telefones.push({telefone: _tel , tipo:_tip});

 

 

 

assim deve funcionar

 

 

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi, mas só tem uma coisa, quando eu fizer isso e chamar meu metodo de cadastrar dentro da classe Remote, dentro desse metodo eu vou chamar o metodo la no php, que cadastra o cara no banco, so que eu tenho que passar os paramentros desse modo ai como eu devo passar, eu passo simplesmente o objeto da classe PacienteVO, ou tenho que trabalhar antes jogar os telefones em um vetor e os enderecos em outro e mandar????

 

Abs

 

É já tentei acessar esses dados la no php, mas não to conseguindo de jeito nenhum, alguma coisa ta errada. O que você sugeriu no seu ultimo post, foi legal eliminou as duplicatas que tava tendo no banco.Vo deixar como to tentando aqui:

 


public function cadastrarPacientes($objPaciente){ // so to mandando o objeto de la do flex

		$mysql = mysql_pconnect(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD);
        mysql_select_db(DATABASE_NAME);
		
		
		
		$dados = new PacienteVO();
		$dadosTel = new TelefoneVO();
		$dadosEnd = new EnderecoVO();
		
		$dados->idPaciente = $objPaciente['idPaciente'];
		$dados->nomePaciente =  $objPaciente['nomePaciente'];
		$dados->dataNascimento =  $objPaciente['dataNascimento'];
		$dados->observacoes =  $objPaciente['observacoes'];
		
		$query = "insert into Paciente(nomePaciente,dataNascimento,observacoes)values('{$dados->nomePaciente}',{$dados->					dataNascimento},'{$dados->observacoes}')";
		$result = mysql_query($query);
		
		$lastId = mysql_insert_id();

// Cadastro o paciente e pego o id dele, pra cadastrar os telefones

$dadosTel->Paciente_idPaciente = $lastId;
		
		
		$total = count($objPaciente['telefones']); // Aqui ta certo o valor do $total
		for($i=0;$i<$total;$i++){
		
			
			$dadosTel->telefone = $objPaciente->telefones[$i]->telefone; 
			$dadosTel->tipo = $objPaciente->telefones[$i]->tipo;
			$sql = "insert into Telefone(telefone,tipo,Paciente_idPaciente) values('{$dadosTel->telefone}','{$dadosTel->tipo}',{$dadosTel->Paciente_idPaciente})";
		$execute = mysql_query($sql);
		}

O banco é preenchido porem o valor do telefone e do tipo nao vao sera que tenho que instanciar como TelefoneVO?

tipo:

 

$objPaciente->telefones = new TelefoneVO();

 

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.