Ir para conteúdo

POWERED BY:

Arquivado

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

hc3floyd

Buscar Relacionamento jQuery e PHP

Recommended Posts

iae galera , vamos há mais uma dúvida , rs é o seguinte eu tenho uma entidade Cliente que tem uma FK de Endereço ( endereco_id ) como atributo , então segue o método que busca cliente :

ClienteController

	public function show($id) {

		$cliente = Cliente::find($id);

		if(empty($cliente)) {
			return "cliente não existe";
		}
		
		return view('cliente.detalhes')->with('cliente',$cliente);
	}

esse é o script que estou usando para capturar esse cliente e popular alguns campos input.

$(document).ready(function(){
	$('.buscar').on('click',function(){
		var id = $(this).attr('id');
		var obj = $(this).data('id');
		
		console.log('o id é: '+id);
		console.log(obj[0]); // acessa o primeiro objeto do array
                //popula os inputs
	});
});

é da aqui que vem o $(this).data('id').

@foreach ($clientes as $key=>$cli)
			<tr>
				<td> {{ $cli->id }} </td>
				<td> {{ $cli->nome }}  </td>
				<td> {{ $cli->idade }} </td>
				<td> {{ $cli->cpf }} </td>
				<td> {{ $cli->telefone }} </td>
				<td> {{ $cli->email }} </td>

				<td align="center">
					<a class="buscar" id="{{ $key }}" data-toggle="modal" data-id="{{ $clientes }}">
						<span class="glyphicon glyphicon-eye-open"></span>
					</a>
				</td>
@endforeach
</table>

eu to querendo enviar essas informações para um modal que sera populado pelo script só que não sei como acessar os propriedades do endereço já que o que está sendo retornado é o endereco_id , vou postar logo abaixo o retorno da variável obj.

obj = $(this).data('id');

Object {id: 5, nome: "Eliel Virgens Santos", idade: "24", cpf: "010101010", email: "java.progress@bol.com.br"…}
cpf:"010101010"
created_at:"2016-03-13 13:20:07"
email:"java.progress@bol.com.br"
endereco_id:"5" // AQUI É ONDE MORA O PROBLEMA
id:5
idade:"24"
nome:"Eliel Virgens Santos"
telefone:"7491416568"
updated_at:"2016-03-13 13:20:07"

veja que antes eu estava acessando o endereco assim $cliente->endereco->campo como devo fazer agora?

Compartilhar este post


Link para o post
Compartilhar em outros sites

é justamente na conversa de um com o outro , vou tentar explicar no php eu uso o -> para acessa as propriedades de endereço que estão no cliente tipo

cliente->endereco->rua

com isso ai eu consigo mostrar a rua que o cliente x está cadastrado em outras eu acesso o chave de endereço no cliente e mostro a rua.

 

var obj = $(this).data('id');

quando eu faço isso ai obj vem com os dados do cliente mas não sei como acessar o endereço porque só vem a chave

eu quero saber como eu faço para acessar a rua do endereço já que não vou usar o php com o -> para acessar

 

por exemplo se eu colocar console.log(obj[0].nome); ele vai mostrar o nome do cliente

mas se eu fizer console.log(obj[0].endereco.rua); não é um comando válido

Compartilhar este post


Link para o post
Compartilhar em outros sites


$cliente = Cliente::find($id)->join('endereco', 'cliente.endereco_id', 'endereco.id')->selectRaw('*');




<a class="buscar" id="{{ $key }}" data-toggle="modal" data-id="{{ $cli }}">

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

$cliente = Cliente::find($id)->join('endereco', 'cliente.endereco_id', 'endereco.id')->selectRaw('*');
<a class="buscar" id="{{ $key }}" data-toggle="modal" data-id="{{ $cli }}">

 

 

e como eu acesso essa propriedade no jQuery?

<script type="text/javascript">
$(document).ready(function(){
	$('.buscar').on('click',function(){
		var id = $(this).attr('id');
		var obj = $(this).data('id');
		
		console.log('o id é: '+id);
		console.log(obj[0].endereco.rua);// da erro

	});
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

iae galera , depois de um dia procurando encontrei sem querer vendo uma aula sobre angular js como resolver meu problema

 

no método de listar do meu controller adicionei o with('tabela do relacionamento').get(); assim :

public function lista() {

		$clientes = Cliente::with('endereco')->get();

		return view('cliente.listagem')->with('clientes',$clientes);
	}

com isso ai o meu objeto já teve acesso ao endereco que estava linkado pelo id ( fk ) ai deu pra acessar pelo .

fico assim meu jquery

$(document).ready(function(){
	$('.editar').on('click',function(){
		var id = $(this).attr('id');
		var objJson = $(this).data('id');
		var idUpdate = $(this).attr('value');
		$('#cliNomeEdit').val(objJson[id].nome);
		$('#cliIdadeEdit').val(objJson[id].idade);
		$('#cliCpfEdit').val(objJson[id].cpf);
		$('#cliEmailEdit').val(objJson[id].email);
		$('#cliTelefoneEdit').val(objJson[id].telefone);
		$('#cliRuaEdit').val(objJson[id].endereco.rua);
		$('#cliBairroEdit').val(objJson[id].endereco.bairro);
		$('#cliCepEdit').val(objJson[id].endereco.cep);
		$('#cliCidadeEdit').val(objJson[id].endereco.cidade);
		$('#cliEstadoEdit').val(objJson[id].endereco.uf);
		$('#divAlterar').modal('show');
		$('#formUpdate').attr('action','/clientes/atualizar/'+idUpdate);
	});
});

espero que ajude alguém!

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.