我理解如何使用Eloquent進行基本查詢和關係,但是當根據多個表中的關係選擇信息時,我開始感到困惑。Laravel雄辯和多重聯接
例如,我使用查詢生成器如下可以得到我從數據庫中需要的數據:
$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();
基本上,我是從產品和產品詳細表基礎上的類別中獲取數據的產品是它的一部分,是什麼類型的產品;這些由內部聯接定義爲透視表product_type和product_category。
現在假設我有正確的雄辯關係設置,我將如何去做這個在雄辯?
這裏是雄辯模型的相關部分
產品
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');
}
}
產品詳細信息
class Productdetail extends Eloquent
{
public function product()
{
return $this->belongsTo('Product');
}
}
ProductType
class ProductTypes extends Eloquent{
function products()
{
return $this->belongsToMany('products', 'product_id', 'type_id', 'product_id');
}
類別
class Category extends Eloquent{
public function products()
{
return $this->belongsToMany('product', 'product_category', 'category_id', 'product_id');
}
}
在此先感謝
謝謝你,現在是有道理的。 – Rob
經過幾個小時的無盡搜索,你節省了我的一天,謝謝。 – Sherif