1
resposta

Relacionamento entre 3 models

Olá, estou praticando um pouco aqui e a situação é a seguinte. Eu tenho 3 models ( Cliente[nome, id], Produto[id, nome, preço] e Pedido[id, cliente_id, produto_id]) , como eu faço para criar esse relacionamento no laravel ? ou seja eu quero que ao criar um pedido eu tenha que informar um id de cliente e um id de produto , eu me perdi basicamente no one to one, one to many, many to many ...Estou usando laravel 5.4

1 resposta

Models: Produto, Pedido, Cliente

class Produto extends Model {
// ... fillable, timestamps, etc
public function pedidos()
    {
        return $this->belongsToMany(
            Pedido::class, 'pedido',
            'id', 'produto_id'
        );
    }
// ...
class Cliente extends Model {
// ... fillable, timestamps, etc
public function pedidos()
    {
        return $this->belongsToMany(
            Pedido::class, 'pedido',
            'id', 'pedido_id'
        );
    }
// ...
class Pedido extends Model
{
// ... fillable, timestamps, etc
}

Na prática o uso é:

$cliente = Cliente::find($id);

dd($cliente->pedidos->first()->produto->first()->preco;

Deve ter alguma FK trocada aí mas a ideia é essa...