Tem muitos através de muitos para muitos

Eu tenho o seguinte layout de tabela:

deals:
- id
- price

products:
- id
- name

deal_product:
- id
- deal_id
- product_id

metrics:
- id
- name

metric_product:
- id
- metric_id
- product_id
- value

products emetrics tenha um relacionamento muitos-para-muitos com uma coluna dinâmica de valor.

deals eproducts também têm um relacionamento muitos-para-muitos.

Posso obter métricas para um produto com$product->metrics, mas quero poder obter todas as métricas para todos os produtos relacionados a um acordo, para poder fazer algo assim:$deal->metrics.

Atualmente, tenho o seguinte no meuDeal modelo:

public function metrics()
{
    $products = $this->products()->pluck('products.id')->all();

    return Metric::whereHas('products', function (Builder $query) use ($products) {
        $query->whereIn('products.id', $products);
    });
}

Mas isso não retorna um relacionamento, por isso não posso carregá-lo com entusiasmo ou obter modelos relacionados.

Ele precisa estar no formato de relacionamento, porque eles precisam estar ansiosos para o meu caso de uso.

Obrigado pela ajuda!

questionAnswers(6)

yourAnswerToTheQuestion