Tôi hiểu làm thế nào để sử dụng hùng biện cho các truy vấn cơ bản và các mối quan hệ, nhưng tôi bắt đầu nhận được bối rối khi lựa chọn thông tin dựa trên các mối quan hệ trong nhiều bảng.Laravel hùng hồn và Nhiều tham gia
Ví dụ, tôi có thể nhận được dữ liệu mình cần từ cơ sở dữ liệu bằng cách sử dụng các truy vấn xây dựng như sau:
$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();
Về cơ bản, tôi nhận được dữ liệu từ các bảng sản phẩm và productdetails trên cơ sở đó loại các sản phẩm là một phần và loại sản phẩm đó là gì; Các giá trị này được xác định bởi các kết nối bên trong với các bảng pivot product_type và product_category.
Bây giờ giả sử tôi có những mối quan hệ hùng hồn thiết lập một cách chính xác, làm thế nào tôi sẽ đi về việc này trong hùng biện?
Dưới đây là những phần liên quan của mô hình hùng biện
sản phẩm
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');
}
}
Chi tiết sản phẩm
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');
}
Thể loại
class Category extends Eloquent{
public function products()
{
return $this->belongsToMany('product', 'product_category', 'category_id', 'product_id');
}
}
Cảm ơn trước
cảm ơn bạn, nó có ý nghĩa bây giờ. – Rob
sau một vài giờ tìm kiếm bất tận bạn đã lưu trong ngày của tôi, cảm ơn. – Sherif