如何使用Doctrine和Symfony2 Framework关系记录每个实体数据?

时间:2014-04-01 11:23:03

标签: php symfony logging doctrine entity-relationship

我将开始一个新的PHP项目,Doctrine ORM将用于Symfony 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)
   ...

- 每个对象都将在实体表上有一个日志数据。

- 原因是,我们应该能够轻松地通过表格获取对象的所有关系。

如何使用Doctrine来完成类似这样的场景?

谢谢。

1 个答案:

答案 0 :(得分:0)

首先,您应该将PHP对象命名为复数,而不是单数,因为它们代表组中的单个实体。然后,您添加到每个实体的entityId字段确实没有意义,因为您已经有一个id字段,表示该字段。

对于我所看到的,您需要定义实体之间的关系。您可以使用OneToOneOneToManyManyToOneManyToMany。使用哪一个取决于应用程序规范,但是从您的代码派生的示例:

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

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

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

等等。我根本不了解你的entityId,你能说得更具体吗?