我对mysql的61个join表限制有问题。我有57+不同的类扩展基类,其中包含了评论,喜欢,标签的关联。当我得到最多的评论时,MySQL崩溃了。规则必须连接整个鉴别器映射和注释本身以及按计数排序(注释)。
有没有办法解决这个问题?
有没有其他方法可以实现对不同类型实体的注释,而不需要继承和重新复制相同的关联?
以下是实体的示例模式。当我想添加带有注释的新实体类型时,likes我只是扩展BaseClass来接收这些功能。

发布于 2014-01-13 01:21:08
如果我没理解错的话,你要做的是拥有许多不同的实体类型,这些实体类型是可以被注释的。
要做的第一件事是从Doctrine后退一步,并讨论实现这一点所需的最简单的表结构。
类似这样的内容可能就足够了:
评论
_______________________
| id | type | entity_id |
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯在Doctrine中,为了方便起见,在基类中有双向关系是很好的,但有时它们不是最好的选择。根据实体类型和id直接在comments表上执行查询可能会简化您的体系结构。
您可能还希望考虑删除基类,并使每个实体成为独立实体。
由于博客文章可以存在于没有评论的上下文中(例如,在不允许评论的博客上),那么$blog->getComments()就没有多大意义了。
进行此更改时,您可以执行以下操作:
$comments = $commentsRepository->findCommentsForEntity($entity);
$commentsCount = count($comments);存储库可以生成所需的查询,将实体作为entity_id参数传递,并根据实体类型设置所需的注释类型。
https://stackoverflow.com/questions/21077161
复制相似问题