How do I make a list nested via json with Aravel?

Asked

Viewed 99 times

0

I’m trying to make a nested list via json, with the Aravel, example, the companies table, has several products each company, I want when I click on a particular company, appear the registered products only in that company that I clicked, but I’m not getting, someone has 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 businesses thus:

                <?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 created a query.js file and imported in the form along with the callback import. My file query.js:

  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);
              });
            });
  • Have you created the Eloquent Model classes? You have this code to provide?

  • I edited the question.

  • In Laravel just write TransferenciaArquivo::with('produtoTransferenciaArquivos')->get() will charge, but, your code is strange, because, is Laravel is not ?

  • To consult the products and companies, I made in pure php, I do not know very well Aravel. I have to put this code q vc sent in the model ? and then call you where?

  • Fabio has to call in Controller !!!

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.