Return columns from table pivo belongsToMany Laravel

0

Goodmorningperson.

IcreatedasearchthatreturnstherequestsandwhenIclickopenstheproductsofthatrequest.ButIcannotmaketheproductsappearasastring,onlyinarrayformatasintheimage.DoesanyoneknowwhatI'vedonewrong?

MODELREQUEST

publicfunctionproduto(){return$this->belongsToMany(Produto::class,'solicitacaodet');}

PRODUCTMODEL

publicfunctionsolicitacao(){return$this->belongsToMany(Solicitacao::class,'solicitacaodet');}

CONTROLLHER

publicfunctioncreate(){//if(Gate::denies('equipamento-create')){//returnview('admin._msg');//}$solicitacoes=Solicitacao::All();$pessoas=DB::table('pessoasolcompvend')->where('solicitante','=','s')->orderby('pessoa')->get();$unidades=DB::table('unidadeadm')->orderby('unidadeadm')->get();$localentrega=DB::table('localentrega')->orderby('localentrega','asc')->get();$caminhos=[['url'=>'/home','titulo'=>'Inicio'],['url'=>route('pedidocompra.index'),'titulo'=>'PedidodeCompra'],['url'=>'','titulo'=>'Create'],];returnview('compra.pedidocompra.create',compact('solicitacoes','detalhes','pessoas','unidades','localentrega','produtos','centrocustos','caminhos'));}

VIEW

                                    Solicitation                Date

<?phpforeach($solicitacoesas$solicitacao){?><trstyle="background-color: #e1e1e1;color: black">                
            <td id="id"><a href="#"><?php echo $solicitacao->idsolicitacao?></a></td>   
            <td><?php echo date('d/m/Y', strtotime($solicitacao->data))?></td>
        </tr>

            <tr>
                <td colspan="2">

                    <table class="table table-striped table-bordered">
                       <thead>
                        <tr>
                          <th></th>
                          <th>Id</th>
                          <th>Produto</th>
                          <th>Qnt</th>                
                          <th>Detalhe</th>                
                        </tr>
                      </thead>
                      <tbody>
                      <?php 

                      $detalhes = $solicitacao->solicitacaodet;
                      $produtos = $solicitacao->produto;                          
                      $centrocusto = $solicitacao->centrocusto;


                      ?>                   

                      <?php foreach ($detalhes as $detalhe){?>                          
                      <tr>
                        <td>
                          <input type="checkbox" />
                        </td>
                        <td><?php echo $detalhe->produto_idproduto ?></td>
                        <td>
                          <?php 

                              echo $detalhe->produto()->select('produto')->get();
                              // echo $produto->produto

                          ?>                                
                        </td>
                        <td><?php echo $detalhe->qnt ?></td>                           
                        <td><?php echo $detalhe->detalhe ?></td>                           
                      </tr>
                       <?php } ?> 
                    </tbody>                        
                    </table>                        
                </td>
            </tr>

        <?php } ?>           
    </tbody>
    </table>      



</div>              
    
asked by anonymous 05.11.2018 / 15:00

2 answers

1

In Laravel, to access a present value in a Pivot table it is necessary to use the pivot attribute.

For example, if you have a N:N from Usuario to Produto relationship, you would have three tables: usuarios , produtos , and usuarios_produtos , where usuarios_produtos has produto_id , usuario_id and preco

You would need to set the relationship in the Usuario table like this:

// bastante atenção no plural em caso de relacionamentos que têm mais de um retorno
public function produtos()
{
      return $this->belongsToMany(Produto::class, 'usuarios_produtos')->withPivot(['preco']);
}

Note that it is necessary to call withPivot to include "extra columns" of the N:N relationship table.

Now, just call the view like this:

   @foreach($usuarios as $usuario)
    O usuário {{ $usuario->nome }} tem os seguintes produtos:

    @foreach($usuario->produtos as $produto)
        O produto é {{ $produto->nome }} e o preço é {{ $produto->pivot->preco }}
    @endforeach

   @endforeach

Note that to access preco , which is not in the product table, but in usuarios_produtos , it was necessary to call the pivot property, because it contains the binding elements between the two tables.

    
05.11.2018 / 19:30
0

MODEL REQUEST (check if the fields there in whitPivot are right with your connection table)

public function produto()
{
    return $this->belongsToMany(Produto::class,'solicitacaodet')->whitPivot('qnt','detalhe');
}

CONTROLLHER

$solicitacoes = Solicitacao::All();   

VIEW

$produtos = $solicitacao->produto;  

foreach($produtos as $produto){
  echo $produto->pivot->detalhe;
}
    
05.11.2018 / 19:23