Relationship Eloquent / Laravel Onetomany

0

Good afternoon, I'm using Laravel 5.7 to create an ordering system. So I have 3 tables: customers, products and orders.

My Database:

For the time being my migrations look like this:
Migrations:
migration clients:

    Schema::create('clientes', function (Blueprint $table) {
        $table->increments('id');
        $table->text('nome_completo');
        $table->text('rua');
        $table->text('numero');
        $table->text('bairro');
        $table->text('email');
        $table->text('tel');
        $table->text('empresa');
        $table->timestamps();
    });

migration products:

Schema::create('produtos', function (Blueprint $table) {
        $table->increments('id');
        $table->text('nome');
        $table->float('valor');
        $table->timestamps();
    });

migration requests:

Schema::create('pedidos', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('cliente_id')->unsigned();
        $table->foreign('cliente_id')
          ->references('id')->on('clientes');
        $table->integer('produto_id')->unsigned();
        $table->foreign('produto_id')
          ->references('id')->on('produtos');
        $table->integer('quantidade');
        $table->float('total', 8, 2);
        $table->boolean('pago');
        $table->timestamps();
    });

Models:
App \ Product

public function pedidos()
{
  return $this->belongsTo(Pedidos::class);
}

App \ Client

public function pedidos()
{
  return $this->belongsTo(Pedidos::class);
}

App \ Orders

protected $table = 'pedidos';
protected $primaryKey = 'id';

public function clientes()
 {
    return $this->belongsTo(Cliente::class);
 }

 public function produtos()
   {
       return $this->hasMany(Produto::class);
   }

Now what would the controllers look like? I would like to recover ALL requests! I've tried

$pedidos = Pedido::all()->produtos;

And nothing!

The table that will be displayed in the Orders view should contain the customer name, product name, quantity of each product, and total value.

    
asked by anonymous 11.12.2018 / 18:42

1 answer

0

Thank you @adventistaam

The VIEW and relationships issue has been resolved. Now I will start creating and updating!

Order Template

public function clientes()
{
    return $this->belongsToMany('App\Cliente', 'pedidos', 'cliente_id', 'id');
}

public function produtos()
  {
      return $this->belongsToMany('App\Produto', 'pedidos', 'produto_id', 'id');
  }

Model Client and Product

public function pedidos()
{
  return $this->belongsToMany(Pedido::class);
}

View index

 @foreach ($pedidos as $pedido)
                <tr>
                  <td >{{ $pedido->id }}</td>
                  <td >{{ $pedido->clientes[0]->nome_completo }}</td>
                  <td >{{ $pedido->clientes[0]->rua }}, {{ $pedido->clientes[0]->numero }} - {{ $pedido->clientes[0]->bairro }} </td>
                  <td>{{ $pedido->produtos[0]->nome }}</td>
                  <td>{{ $pedido->quantidade }}</td>
                  <td>{{ $pedido->produtos[0]->valor }}</td>
                  <td>{{ date('d/m/Y H:i', strtotime($pedido->created_at)) }}</td>
                  <td> @if ($pedido->pago == 1)
                    Pago
                  @else
                    Débito
                  @endif</td>
                  <td>
                    <ul class="list-inline list-small">
                          <li class="list-inline-item"><a title="Editar" href="{{ route('pedidos.edit', ['pedido' => $pedido->id]) }}" class="btn btn-warning btn-sm"><span class="fas fa-edit"></span></a></li>
                          <li title="Excluir" class="list-inline-item">
                            <form  action="{{ route('pedidos.destroy', ['pedido' => $pedido->id]) }}" onsubmit="return confirm('\nTem certeza que deseja excluir esta nota?'); return false;" method="post">
                              {{ csrf_field() }}
                              {{ method_field('DELETE') }}
                            <button type="submit" class="btn btn-danger btn-sm"><span class="fas fa-trash-alt "></span></button>
                          </form>
                        </li>
                    </ul>
                  </td>
                </tr>
              @endforeach
    
12.12.2018 / 01:05