Hat viele bis viele-zu-viele

Ich habe das folgende Tabellenlayout:

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 undmetrics hat eine Viele-zu-Viele-Beziehung zu einer Pivot-Wertspalte.

deals undproducts haben auch eine Viele-zu-Viele-Beziehung.

Ich kann Metriken für ein Produkt mit @ erhalte$product->metrics, aber ich möchte in der Lage sein, alle Metriken für alle mit einem Geschäft verbundenen Produkte abzurufen, also könnte ich so etwas tun:$deal->metrics.

Ich habe derzeit die folgenden in meinemDeal model:

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

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

Aber dies gibt keine Beziehung zurück, daher kann ich sie nicht unbedingt laden oder verwandte Modelle daraus abrufen.

Es muss im Beziehungsformat vorliegen, da sie unbedingt für meinen Anwendungsfall geladen werden müssen.

Danke für Ihre Hilfe

Antworten auf die Frage(12)

Ihre Antwort auf die Frage