繁体   English   中英

Laravel与扩展模型的雄辩关系

[英]Laravel Eloquent relationships with Extended Models

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

class Asset extends Model {

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

class Video extends Asset {

}

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

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

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

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

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

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

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

希望这对你有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM