是否可以在Laravel模型中创建自定义关系?

时间:2016-07-30 12:23:30

标签: php laravel-5 eloquent

我的关系既不是一对一也不是一对多,我想知道是否可以在Laravel / Eloquent模型中表达自定义关系。

基本上我有属于单一类别的产品,但多个产品可以属于同一类别。 products表存储category_id。这显然不是一对一的,因为类别被重用,Laravel将需要product_id表上的categories外键。它更接近于一对多,仅限于单个项目,但我更倾向于避免使用额外的category_product表来定义单个关系。我怀疑这是多对一的关系吗?

1 个答案:

答案 0 :(得分:2)

显然,这是一对多关系,其中category 有多个产品,而product 属于到一个category

  1. 基本上我的产品属于一个类别。 相当于product属于一个category
  2. 多个产品可以属于同一类别。 相当于:a category hasMany products。
  3. 因此,以下关系将起作用:

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

    class Category extends Model
    {
        public function products()
        {
            return $this->hasMany('App\Product');
        }
    }
    

    我希望这会有所帮助。