2014-04-01 71 views
0

我将开始一个新的PHP项目,将在Symfony框架上使用Doctrine ORM。如何使用Doctrine和Symfony2 Framework关系记录每个实体数据?

我现在正在考虑实体和关系结构。它可能完全听起来荒谬和矛盾的ORM逻辑?

我以前没有用过Symfony和Doctrine。

会有这么多实体,每个实体都有很多关系。

例如, 假设我有3个实体。

- 用户

- 后

-Comment

我已要求由项目业主类似下面的结构。

log_entities

Id   Type  CreatedAt Status  title 

    1   Post  Y-m-d H:i:s  1   Post 1... 
    2   Comment Y-m-d H:i:s  0   comment 1... 
    3   Comment Y-m-d H:i:s  1   comment 2... 
    4   User  Y-m-d H:i:s  1   User X... 
    ...   ...  ...    ...  ... 

rel_entities

from_log_id fromContentType  toContentType to_log_id 
    2    Comment    Post   1 
    3    Comment    Post   1 
    1    Post     User   4 

对象

User 
    -id 
    -name 
    -log_id (fk) 
    ... 

Comment 
    -id 
    -connet 
    -log_id (fk) 
    ... 

Post 
    -id 
    -content 
    -log_id (fk) 
    ... 

-every对象将会对实体表中的日志数据。

-理由是,我们应该可以很容易地获得一个对象的所有关系。

像这样的类似情况应该如何与Doctrine一起完成?

谢谢。

+0

我想你可以先阅读[Doctrine documentation](http://docs.doctrine-project.org/en/2.0.x/reference/association-mapping.html)。例如,让句子可以通过确定关系来帮助你。如果一个用户可以有多个帖子,而一个帖子只属于一个用户,那么它就是一个ManyToOne关系。 – Debflav

+0

我阅读文档。但感到困惑。我无法决定我应该使用哪种关系模型。 –

回答

0

首先,您应该将您的PHP对象命名为非复数形式,但以单数形式命名,因为它们表示组中的单个实体。然后,您添加到每个实体的entityId字段实际上没有意义,因为您已经有一个id字段,它完全代表该字段。

对于我所看到的,您需要定义您的实体之间的关系。您可以使用OneToOne,OneToMany,ManyToOneManyToMany。哪一个使用的是应用规范,但从您的代码派生的例子:

User 
    - id 
    - name 
    - comments (OneToMany -> Comment) 
    - posts (OneToMany -> Post) 

Comment 
    - id 
    - connet 
    - user (ManyToOne -> User) 

Post 
    - id 
    - content 
    - user (ManyToOne -> User) 

依此类推。我完全不理解你的entityId,你能更具体吗?

+0

我编辑了这个问题。应该有每个实体数据的日志。并从该日志中,我应该建立关系,并可以从该log_id获取实体数据。这就是我所要求的:) –

+0

您可以创建另一个名为'Log'的实体,并为每个其他实体添加ManyToMany关系。我仍然不明确你的问题是什么。你应该尝试写一个更好的规范,所以也许我可以更多的使用。 –

相关问题