我有3个模型:Basket
,Product
和Asset
。
Basket
可以包含多个Asset
,一个资产可以显示在多个Basket
中。
Product
可以包含多个Asset
个,但Asset
也可以分配给多个Product
。
目的是让Asset
成为Basket
,同时仍然知道从哪个Product
添加。{/ p>
我设想的表结构是:
-------------------------------------
| basket_id | asset_id | product_id |
-------------------------------------
| 1 | 1 | 1 |
| 1 | 3 | 1 |
| 1 | 15 | 2 |
| 2 | 23 | 1 |
| 2 | 3 | 1 |
| 3 | 79 | 3 |
-------------------------------------
我还设想了这样的模型设置:
class Basket extends Eloquent {
public function assets() {
return $this->belongsToMany('Asset');
}
}
class Product extends Eloquent {
public function assets() {
return $this->belongsToMany('Asset');
}
}
class Asset extends Eloquent {
public function products() {
return $this->belongsToMany('Product');
}
public function product() {
// This should return the product from the product_id column
}
}
我不确定如何撰写Asset::product()
,以便返回相应的Product
。
我想拨打Basket::find(1)->assets()->first()->product;
之类的内容,以获取第一个资产被添加到购物篮中的产品。
答案 0 :(得分:1)
这是一小部分,可以满足您的需求
https://github.com/jarektkaczyk/Eloquent-triple-pivot
并感谢你的PR包装上的包装:
https://packagist.org/packages/jarektkaczyk/eloquent-triple-pivot