我打算将项目拆分为多个包:
产品
public function images()
{
return $this->morphToMany(Image::class, 'imageable');
}
文章
public function images()
{
return $this->morphToMany(Image::class, 'imageable');
}
图片
public function products()
{
return $this->morphedByMany(Product::class, 'imageable');
}
public function articles()
{
return $this->morphedByMany(Article::class, 'imageable');
}
一切正常但未来我可能会添加更多将转换为Image模型的软件包,因此我将添加它的关系。
如果我想将反向关系添加到Image模型中,问题就出现了,这是对其他模块的依赖。
每次添加一个变形的新模块时,我都试图找到一种干净的方法,而不更新图像模块。
如果我想添加更多范围方法,存储库方法等,则会出现同样的问题。
我可以将它们扩展到核心项目中,但我必须创建另一个服务提供者等,因此将模块保留在外部包中会变得无助。