I'm trying to make a nested list via json, with laravel, example, the table companies, have several products each company, I want when I click on a particular company, appear the products registered only in that company that I clicked, but not I'm getting it, does anyone have an idea?
My model:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class TransferenciaArquivo extends Model
{
protected $table='TransferenciaArquivos';
protected $fillable=[
'Empresa_id',
'Usuario_id',
'Assunto',
'Email',
'Produto_id',
'Arquivo',
'Comentario',
'StatusTransferenciaArquivos_id',
];
public function statusTransferenciaArquivos(){
return $this->hasOne('App\StatusTransferenciaArquivos','id','StatusTransferenciaArquivos_id');
}
public function empresasTransferenciaArquivos(){
return $this->hasOne('App\Empresa','id','Empresa_id');
}
public function usuariosTransferenciaArquivos(){
return $this->hasMany('App\UsuariosTreinamentos','id','Usuario_id');
}
public function produtoTransferenciaArquivos(){
return $this->belongsToMany('App\Produto','id','Produto_id');
}
}
I was returning the products like this:
<?php
$callback = isset($_GET['callback']) ? $_GET['callback'] : false;
$conecta = mysqli_connect("localhost","root","Mini221190","datamace");
if(isset($_GET['id'])) {
$catID = $_GET['id'];
} else {
$catID = 1;
}
$selecao = "SELECT p.id, p.Nome FROM Produtos p inner join empresas_produtos pe on p.id = pe.Produto_id WHERE Empresa_id = {$catID}";
$produtos = mysqli_query($conecta,$selecao);
$retorno = array();
while($linha = mysqli_fetch_object($produtos)) {
$retorno[] = $linha;
}
echo json_encode($retorno);
// fechar conecta
mysqli_close($conecta);
?>
And companies like this:
<?php
$callback = isset($_GET['callback']) ? $_GET['callback'] : false;
$conecta = mysqli_connect("localhost","root","Mini221190","datamace");
$selecao = "SELECT id, RazaoSocial FROM Empresas";
$empresas = mysqli_query($conecta,$selecao);
$retorno = array();
while($linha = mysqli_fetch_object($empresas)) {
$retorno[] = $linha;
}
echo ($callback ? $callback . '(' : '') . json_encode($retorno) . ($callback? ')' : '');
// fechar conecta
mysqli_close($conecta);
?>
and I created a query.js file and imported it into the form along with the callback import. My query.js file:
function retornarEmpresas(data){
var empresas = "";
$.each(data, function(chave,valor){
empresas += '<option value="' + valor.id + '">' + valor.RazaoSocial + '</option>';
});
$('#empresas').html(empresas);
}
$('#empresas').change(function(e){
var empresaID = $(this).val();
$.ajax({
type:"GET",
data: "id=" + empresaID,
url:"http://localhost:8080/retornar_produtos.php",
async: false
}).done(function(data){
var produtos = "";
$.each($.parseJSON(data), function(chave, valor){
produtos += '<option value="' + valor.id + '">' + valor.Nome + '</option>';
});
$('#produtos').html(produtos);
});
});