是否可以在Laravel模型中创建自定义关系?
问题描述:
我有一种既不是一对一也不是一对多的关系,我想知道是否有可能在Laravel/Eloquent模型中表达自定义关系。是否可以在Laravel模型中创建自定义关系?
基本上我有属于一个类别的产品,但多个产品可以属于同一类别。 products
表存储category_id
。这显然不是一对一的,因为类别被重用,Laravel需要在categories
表上使用product_id
外键。它更接近于一对多,仅限于单个项目,但我宁愿不必额外创建一个表来定义单个关系。我怀疑这是多对一的关系?
答
显然,这是一个一一对多的关系,其中一个category
的hasMany产品和product
属于关联到一个category
:
-
基本上我有属于一个类别的产品。等价于:a
product
归属于单个category
。 - 多个产品可以属于同一类别。 相当于: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');
}
}
我希望这将有助于。
你说得对,很明显,我工作太迟了!我正在考虑这种关系是错误的,因此“多对一”就好像产品拥有这个类别,当然这是相反的方式 - 因此是“一对多”的反面。 – baseten