在laravel我有桌子推车,cart_products,测试,包。 - 我需要使用laravel ORM将这些表关联起来。在cart_products表中,有时它会进行测试,有时它会有包。那我应该如何联系他们呢? 在购物车模型中就像是
public function products(){
return $this->hasMany('HbDiagnostic\Models\CartProduct');
}
获取数据......
"products": [
{
"id": "1",
"cart_id": "1",
"productable_id": "2",
"productable_type": "test",
"quantity": "1",
"created_at": "2015-06-10 07:23:59",
"updated_at": "2015-06-10 07:23:59"
},
{
"id": "2",
"cart_id": "1",
"productable_id": "1",
"productable_type": "package",
"quantity": "1",
"created_at": "2015-06-10 07:23:59",
"updated_at": "2015-06-10 07:23:59"
}];
现在我还需要测试细节和包装细节以及每种产品。 请帮助我,我尝试了一些方法,但没有做对。
谢谢, sanjit
答案 0 :(得分:0)
我也是Laravel的初学者,但我理解Eloquent就像这样
1:N = hasMany
N:1 = BelongTo
N:N = BelongToMany
所以你有4个Cart Cart,cart_product,test,package
如果我理解这些表,它应该是4个Base table和1个Composite table(Cart_product)
购物车,产品,测试,包装和Cart_Produ_Product(复合表)
关于关系请参阅下面的链接
答案 1 :(得分:0)
@Chanom,感谢您的回答,但我的查询与标签测试和包装有cart_product表有关,最后它对我有用... 关系就像:
Model CartProduct:
public function productable(){
return $this->morphTo();
}
Model Test :
public function cart_product(){
return $this->morphMany('HbDiagnostic\Models\CartProduct', 'productable');
Model Package :
public function cart_product(){
return $this->morphMany('HbDiagnostic\Models\CartProduct', 'productable');
And finally i am retrieving results like
$cartProduct=CartProduct::Query()->where('cart_id',$cart->id);
return $cartProduct->with('productable')->get();
}
这些链接对我帮助很大.. Laravel - Eager Loading Polymorphic Relation's Related Models 和 Laravel: Returning the namespaced owner of a polymorphic relation