1

基础工作

我有一个数据库设计(剪断到相关部分),如下所示:

records
  entities
    people

其中表之间不存在适当的关系,而是通过共享相同recordsentities方式扩展。peopleid

我有类似定义的 Eloquent 模型,因此Record由 扩展 由Entity扩展Person

目标

Record并且Entity是抽象的,我想简单地使用Person层次结构中该级别的其他模型。

问题

我如何“链接”Record并使EntityPerson一切无缝运行?我认为关系不合适。我认为它与这样的事情有关:

protected __construct() {
  parent::__construct();
}
4

1 回答 1

1

我建议您仍然为 Person、Entity 和 Record 创建一个模型,并将它们与“belongsTo”关系链接在一起。(将 entity_id 列添加到“People”表,将“record_id”添加到“Entities”表)。

如果您只使用 Person 模型,则可以添加一个“已保存”模型观察者来创建实体并在创建 Person 时记录条目,并将它们与全局 id 联系在一起。

http://laravel.com/docs/eloquent#model-observers

如果您这样做,您可以通过执行以下操作来访问该人的实体和记录字段:

$person->entity->fieldName

$person->record->fieldName

话虽如此,这似乎太复杂了。我只会有一张 People 表,并将所有人的数据存储在那里。海事组织

于 2013-11-04T18:31:15.633 回答