Laravel 5.5:与多个不同子模型的关系

时间:2017-11-06 15:10:32

标签: php laravel model relationships

我正在为我们的图书馆申请。

我们有不同的文件类型(公报,书籍,报告,报纸剪报等)

我开始为Gazettes创建一个模型,其中包括名称,年份,数量,法规/法律类型,参考等字段。在处理文件上传时,我与文件建立了关系。

因此,我们的想法是为所有文档设置一个Resource类,并为每个文档类型设置一个模型,因为字段不同。报纸剪报将body, newspaper, date and page作为字段。书籍会有很多,比如title, subtitle, author, publisher, genre, ISBN, hard/soft

我应该能够将文件链接到每个文件,无论是作为文档的数字版本还是作为"相关的"。

我在考虑文件和资源模型之间的多对多关系,但我如何仍然包含每个子模型的不同字段。我不必单独为每种文档类型建立关系(gazette_file和book_file和report_file),尤其是因为它们应该是可互换的。

我使用什么样的模型/关系结构?

有一个几乎类似的问题Laravel 5 - defining relationships,但重点不同。提供的答案并未考虑不同的领域。

1 个答案:

答案 0 :(得分:0)

我认为你正在寻找一种多态关系。

https://laravel.com/docs/5.5/eloquent-relationships#polymorphic-relations

因此,您的文件模型将具有“id”字段和与文件关联的模型相关的“类型”。

E.g。

Book with the ID of 99

Files Model

id = 1
related_id = 99
related_type = book
file_name = "yourname.jpg"
etc