Ich verstehe, wie Eloquent für grundlegende Abfragen und Beziehungen zu verwenden, aber ich bin verwirrt, wenn Informationen basierend auf Beziehungen in mehreren Tabellen auswählen.Laravel Eloquent und mehrere Joins
Zum Beispiel kann ich die Daten bekomme ich aus der Datenbank muß die den Query Builder wie folgt verwendet:
$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, ich bin immer Daten aus den Produkt- und Produktdetails Tabellen basierend auf welcher Kategorie des Produkt ist ein Teil von und welche Art von Produkt es ist; Diese werden durch innere Joins definiert, um die Tabellen product_type und product_category zu pivotieren.
Nun vorausgesetzt, ich habe die eloquenten Beziehungen richtig eingerichtet, wie würde ich dies in Eloquent tun?
Hier sind die relevanten Teile der Eloquent Modelle
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');
}
}
Product
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');
}
}
Vielen Dank im Voraus
danke, es macht jetzt Sinn. – Rob
Nach ein paar Stunden endloser Suche hast du meinen Tag gerettet, danke. – Sherif