我在一个有扩展模型的网站上工作,例如。
class Asset extends Model {
public function project() {
return $this->belongsTo(Project::class);
}
}
class Video extends Asset {
}
我是否需要与扩展类建立相同的 belongsTo
Eloquent 关系,或者凭借父类拥有它,Laravel 会做剩下的事情吗?
此外,是否有任何文档详细说明如何构建此类关系(即,就 Controller 而言)?我在(通常非常出色的)Laracasts 网站上找不到任何内容。
最佳答案
您不需要两次实例化扩展方法,除非您想用不同的行为覆盖它。
我个人在我的应用程序中使用了很多继承,它的工作方式正如您所期望的那样,每个关系都使用父默认值或您声明的特定 protected 变量继续工作和查询。
例如,如果您声明一个 protected $table = 'foo'
,子项也会使用该变量来执行其查询,或者您可以在子项上覆盖它以查询不同的表来自 parent 。
在文档方面,您找不到太多信息的原因我认为是因为这更像是一个 PHP 和 OOP 问题,而不是特定于框架的问题。
如果你想声明多态关系,这是在你的 SQL 中实现多重继承的一种非常常见的方式,Laravel 会支持你,具体 Eloquent relations和 migration commands ,比如 $table->morphs('asset');
。
希望对你有帮助。
关于php - Laravel Eloquent 与扩展模型的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44654538/