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

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

问题描述:

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

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

显然,这是一个一一对多的关系,其中一个category的hasMany产品和product属于关联到一个category

  1. 基本上我有属于一个类别的产品。等价于:a product归属于单个category
  2. 多个产品可以属于同一类别。 相当于:a category hasMany products。

因此,下面的关系将工作:

class Product extends Model 
{ 

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

和:

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

我希望这将有助于。

+0

你说得对,很明显,我工作太迟了!我正在考虑这种关系是错误的,因此“多对一”就好像产品拥有这个类别,当然这是相反的方式 - 因此是“一对多”的反面。 – baseten