Symfony 条令-基于SQL查询创建和映射实体?

Symfony 条令-基于SQL查询创建和映射实体?,symfony,doctrine,Symfony,Doctrine,是否有可能在另一个实体的基础上创建类似的实体?例如,如果我想要基于一个实体的特定于用户的表,该怎么办。如果没有任何ORM,我只需创建具有不同前缀的同一个表,并使用特定前缀对该表进行查询 我不知道如何解决Symfony 2.5和Doctrine的问题,我只是在任何地方都找不到一个具体的例子,但似乎解决方案可能是Doctrine事件管理器和Load ClassMetadata事件。我无法理解文档中的内容。如果不确切了解您的模式外观或您试图实现的目标,就很难给出准确的答案。但让我们试试: 如果有两个实

是否有可能在另一个实体的基础上创建类似的实体?例如,如果我想要基于一个实体的特定于用户的表,该怎么办。如果没有任何ORM,我只需创建具有不同前缀的同一个表,并使用特定前缀对该表进行查询


我不知道如何解决Symfony 2.5和Doctrine的问题,我只是在任何地方都找不到一个具体的例子,但似乎解决方案可能是Doctrine事件管理器和Load ClassMetadata事件。我无法理解文档中的内容。

如果不确切了解您的模式外观或您试图实现的目标,就很难给出准确的答案。但让我们试试:

如果有两个实体共享一组公共属性,但在其他实体中有所不同,则基本上可以执行典型的OOP继承操作,使用公共内容创建一个抽象父类,并使用其特定属性创建两个子类

在学说上,有不同的继承策略。在网站上了解他们

它们各有利弊。基本上,您可以选择是否希望所有内容都在一个或两个表中。设置一个测试用例,并检查什么对您更有效


注意:抽象超类中的类属性(无论采用何种策略)。

为什么没有ORM?有了条令超类,你就可以存档了。我从来没有说过我想在没有ORM的情况下完成它。我只是举了一个例子,说明我如何在没有ORM的情况下解决这个问题,我正在寻找用ORM解决这个问题的方法。我找到了一种更改表名映射的方法,但它似乎不会强制模式更新,也不会持久化对象。而且,根据这篇文章,这可能是不可能的:我目前还没有真正建立起一个模式。但我的想法是:假设你有一个事件表,记录每个用户的所有事件。用户越多,表上注册的事件就越多,而且会变得非常大。所以我想的是为每个注册的用户创建事件表。然后我会有user1\u事件、user2\u事件、user3\u事件等等。我希望有一个实体“事件”,并动态创建其他实体及其相应的前缀。对不起,但这听起来是个坏主意。对于Doctrine2,这肯定行不通,因为您必须动态添加实体,这是行不通的(至少在没有最难看的黑客的情况下是行不通的)。但是我不介意那些大桌子。MySQL(和其他RDBMS)可以毫无问题地处理数百万行。这只是一个适当索引的问题。我有点认为这也是一个坏主意。我有点担心我的表会增长得太多以至于无法管理,尽管我不确定这会对查询性能产生多大影响。我从来没有真正使用过有数百万个寄存器的表。大型表当然会导致问题。但是,如果您的模式很瘦,并且您已经创建了很好的索引,那么您就不必担心了。例如,如果您有一个事件实体,请对事件类型进行分类,为其分配编号,并仅存储编号。(我只是说,因为我见过有人将类别ID存储为字符串。)