Laravel - Como Passar 2 ou mais JSON_ENCODE? [RESOLVIDO]

Fiz dessa forma mas não está funcionando :confused:

public function indexJson()
{ 
   //listar pacientes
   $pac = Paciente::all();
   return json_encode($pac);

   $psi = Psicologo::all();
   return json_encode($psi);        
}
1 curtida

Não sei o intuito e o que deseja como resposta mas, essas duas formas funcionam, uma com chave número 0 e 1 e a outra como associação pac e psi, exemplos:

public function indexJson()
{
   $pac = Paciente::all();
   $psi = Psicologo::all();
   return json_encode([$pac,$psi]);
}

ou

public function indexJson()
{
   $pac = Paciente::all();
   $psi = Psicologo::all();
   return json_encode(['pac' => $pac,'psi' => $psi]);
}

fiz dessa forma porém continua não exibindo os registros na view. qd eu passo apenas um json_encode funciona.

public function indexJson()
{ 
  //listar pacientes
   $pac = Paciente::all();
   $psi = Psicologo::all();
   return json_encode(['pac' => $pac,'psi' => $psi]);
}

eu monto meus options assim…

function carregarPaciente(){
  $.getJSON('/api/event', function(data) { 
        for(i=0;i<data.length;i++) {
            opcao = '<option value ="' + data[i].pac_codigo + '">' + 
                'Prontuário:'+data[i].pac_prontuario+' - '+data[i].pac_nome_paciente + '</option>';
            $('#paciente').append(opcao);
        }
  });
}

function carregarResp(){
    $.getJSON('/api/event', function(data) { 
        for(i=0;i<data.length;i++) {
            opcao = '<option value ="' + data[i].psi_codigo + '">' + 
                data[i].PSI_NOME + '</option>';
            $('#respAte').append(opcao);
        }
    });
}

o objetivo é lista os dados do paciente e do responsável.

Continue passando do jeito que eu falei

public function indexJson()
{ 
  //listar pacientes
   $pac = Paciente::all();
   $psi = Psicologo::all();
   return json_encode(['pac' => $pac,'psi' => $psi]);
}

e no retorno do json faça um só com dois for, exemplo:

$.getJSON('/api/event', function(data) { 
        var psi = data.psi;
        for(i=0;i<psi.length;i++) {
            opcao = '<option value ="' + psi[i].psi_codigo + '">' + 
                psi[i].PSI_NOME + '</option>';
            $('#respAte').append(opcao);
        }
       var pac = data.pac;
        for(i=0;i<pac.length;i++) {
            opcao = '<option value ="' + pac[i].pac_codigo + '">' + 
                'Prontuário:'+pac[i].pac_prontuario+' - '+ 
                  pac[i].pac_nome_paciente + '</option>';
            $('#paciente').append(opcao);
        }
    });

ou seja, se você faz os dois retornos na mesma requisição os dados já estão lá e você usa os dados pelas suas chaves correspondentes … Se tiver erros debug pode nome ou algo fácil de resolver

muito obrigado!! funcionou perfeitamente!
vlw man!

1 curtida