与数据透视表的关系

时间:2017-02-14 05:37:50

标签: php laravel laravel-5 eloquent laravel-5.3

我有三张桌子,我想在获得结果时使用数据透视表数据。

这些表格是products,store,store_products,cart_items及其字段如下:

  • 产品(ID,名称,价格)

  • 商店(身份证,姓名等)

  • store_products(store_id,product_id,store_price,store_slug)

  • cart_items(id,user_id,product_id,store_id,quantity)

我的CartItem模型就像

class CartItem extends Model
{
    public function product()
    {
        return $this->belongsTo('App\Product');
    }

    public function store()
    {
        return $this->belongsTo('App\Store');
    }

}

当我致电CartItem::with('product')->get()时,我希望从枢轴表(from product table and store_price, store_slug from store_products)返回匹配cart_items.store_id and cart_items.product_id的产品数据"store_products"

如何通过我的CartItem模型创建此关系?如果可能,只使用Eloquent ORM函数而不是查询构建器或原始查询。

1 个答案:

答案 0 :(得分:0)

在产品型号中添加,

public function stores(){
    return $this->belongsToMany(Store::class)->withPivot('store_price', 'store_slug');
}

在商店模式添加中,

public function products(){
    return $this->belongsToMany(Products::class)->withPivot('store_price', 'store_slug');
}

然后打电话,

CartItem::with(['product.stores'])->get();

有关更多说明,请阅读本文:

http://laraveldaily.com/pivot-tables-and-many-to-many-relationships/