Laravel Eloquent und Multiple Joins

Ich verstehe, wie man Eloquent für grundlegende Abfragen und Beziehungen verwendet, aber ich bin verwirrt, wenn ich Informationen auswähle, die auf Beziehungen in mehreren Tabellen basieren.

Zum Beispiel kann ich die Daten, die ich benötige, mit dem Abfrage-Generator wie folgt aus der Datenbank abrufen:

    $data['products'] = DB::table('product')
    ->select('product.id', 'product.ref_num', 'productdetails.name')
    ->join('productdetails', function($join)
    {
        $join->on('product.id', '=', 'productdetails.product_id')
             ->where('productdetails.website_id', '=', '7');
    })
    ->leftJoin('product_category', function($join) use($submenu_id){
        $join->on('product.id', '=', 'product_category.product_id')
            ->where('product_category.category_id', '=', $submenu_id);
    })
    ->leftJoin('product_type', function($join) use($type_id){
        $join->on('product.id', '=', 'product_type.product_id')
            ->where('product_type.type_id', '=', $type_id);
    })
    ->get();

Grundsätzlich erhalte ich Daten aus den Produkt- und Produktdetails-Tabellen basierend auf der Kategorie, zu der das Produkt gehört, und welcher Art von Produkt es ist. Diese werden durch innere Verknüpfungen zu Pivottabellen product_type und product_category definiert.

Angenommen, ich habe die eloquenten Beziehungen richtig eingerichtet, wie würde ich das in Eloquent machen?

Hier sind die relevanten Teile der Eloquent Models

Produkt

class Product extends Eloquent{

public function productdetails()
{
    return $this->hasMany('Productdetail');

public function categories()
{
    return $this->belongsToMany('Category', 'product_category', 'product_id', 'category_id');
}

public function types()
{
    return $this->belongsToMany('Producttype', 'product_type', 'product_id', 'type_id');
}
}

Produktdetails

class Productdetail extends Eloquent
{


public function product()
{
    return $this->belongsTo('Product');
}
}

Produktart

class ProductTypes extends Eloquent{


function products()
{
    return $this->belongsToMany('products', 'product_id', 'type_id', 'product_id');
}

Kategorie

class Category extends Eloquent{

public function products()
{
    return $this->belongsToMany('product', 'product_category', 'category_id', 'product_id');
}
}

Danke im Voraus

Antworten auf die Frage(2)

Ihre Antwort auf die Frage