php - Laravel Eloquent 与扩展模型的关系

标签 php laravel eloquent polymorphism

我在一个有扩展模型的网站上工作,例如。

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 relationsmigration commands ,比如 $table->morphs('asset');

希望对你有帮助。

关于php - Laravel Eloquent 与扩展模型的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44654538/

相关文章:

javascript - Eloquent Javascript第二。第 4 章计算相关性。狼人的日志 - [定义索引] 第 1 部分

php - Laravel Eloquent Query Builder 链接影响原始基本查询

mysql - Laravel Eloquent 或Where 问题

php - 如何允许一名选民投票给多名候选人,但不允许他再次投票给同一候选人?

php - 寻找用于 windows 的 SMTP 服务器

php - facebook 从网站登录和注销?

php - 图像将 Tiff 转换为 png/jpg

json - Laravel json 响应有反斜杠

php - 我应该为我的 webapp 使用什么 DocType?

php - Composer autoload - 从父目录加载类