php – Laravel与扩展模型的雄辩关系

我正在开发一个扩展模型的网站,例如.

class Asset extends Model {

  public function project() {
    return $this->belongsTo(Project::class);
  }
}

class Video extends Asset {

}

我是否需要与扩展类建立相同的belongsTo Eloquent关系,或者凭借拥有它的父类,Laravel会完成其余的工作吗?

另外,是否有任何文档详细说明如何构建这种关系(即控制器方面)?我在Laracasts网站(通常是优秀的)上找不到任何东西.

最佳答案
除非要使用不同的行为覆盖扩展方法,否则不需要对扩展方法进行两次实例化.

我个人在我的应用程序中使用了很多继承,它就像你期望的那样工作,每个关系都使用父默认值或你声明的特定受保护变量继续工作和查询.

例如,如果声明受保护的$table =’foo’,则子项也将使用该变量执行其查询,或者您可以在子项上覆盖它以从父项查询不同的表.

在文档方面,您认为没有找到太多信息的原因我认为这是因为这更像是PHP和OOP问题,而不是特定于框架的问题.

如果你想声明多态关系,这是在SQL中实现多重继承的一种非常常见的方式,Laravel有你的背,特定的Eloquent relationsmigration commands,如$table-> morphs(‘asset’);.

希望这对你有所帮助.

转载注明原文:php – Laravel与扩展模型的雄辩关系 - 代码日志