Laravel关系 - 3向表

时间:2014-10-29 16:01:25

标签: php laravel eloquent relationship

我有3个模型:BasketProductAsset

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;之类的内容,以获取第一个资产被添加到购物篮中的产品。

1 个答案:

答案 0 :(得分:1)

这是一小部分,可以满足您的需求

https://github.com/jarektkaczyk/Eloquent-triple-pivot

并感谢你的PR包装上的包装:

https://packagist.org/packages/jarektkaczyk/eloquent-triple-pivot