php – 与doctrine建立一对多的多态关系

前端之家收集整理的这篇文章主要介绍了php – 与doctrine建立一对多的多态关系前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我先来概述一下这个场景.我有一个可以分配给许多不同对象的Note对象

一本书可以有一个或多个注释.
>图像可以有一个或多个Notes.
> A地址可以有一个或多个Notes.

我想像的数据库如下所示:

id | title           | pages
1  | harry potter    | 200
2  | game of thrones | 500

图片

id | full      | thumb
2  | image.jpg | image-thumb.jpg

地址

id | street      | city
1  | 123 street  | denver
2  | central ave | tampa

注意

id | object_id | object_type | content      | date
1  | 1         | image       | "lovely pic" | 2015-02-10
2  | 1         | image       | "red tint"   | 2015-02-30
3  | 1         | address     | "invalid"    | 2015-01-05
4  | 2         | book        | "boobies"    | 2014-09-06
5  | 1         | book        | "prettygood" | 2016-05-05

问题是,我如何在Doctrine内建模.关于单表继承的一切,我没有一对多的关系.

要注意(没有双关意图),您可能会注意到该笔记根本不需要基于与之相关的对象的唯一属性.

理想情况下,我可以执行$address-> getNotes(),它将返回$image-> getNotes()返回的相同类型的Note对象.

我至少要解决的问题是避免有三个不同的表:image_notes,book_notes和address_notes.

这个问题给应用程序带来了不必要的复杂性.只是因为笔记具有相同的结构并不意味着它们是相同的实体.当在3NF中对数据库进行建模时,它们不是相同的实体,因为注释不能从书籍移动到地址.在你的描述中,书和book_note之间有一个明确的亲子关系,所以建立它.

更多的表不是数据库的问题,但不必要的代码复杂性就是这个问题所示.聪明的聪明才智.这是ORM的麻烦,人们停止进行完整的归一化,并且不能正确建模数据库.

猜你在找的PHP相关文章