我有三张桌子,我想在获得结果时使用数据透视表数据。
这些表格是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函数而不是查询构建器或原始查询。
答案 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/