Laravel 5.5管理包之间的关系

时间:2017-12-11 20:01:06

标签: php mysql laravel laravel-5.5 laravel-eloquent

我打算将项目拆分为多个包:

产品

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模型中,问题就出现了,这是对其他模块的依赖。

每次添加一个变形的新模块时,我都试图找到一种干净的方法,而不更新图像模块。

如果我想添加更多范围方法,存储库方法等,则会出现同样的问题。

我可以将它们扩展到核心项目中,但我必须创建另一个服务提供者等,因此将模块保留在外部包中会变得无助。

0 个答案:

没有答案