Symfony2 3 个实体之间的映射

Posted

技术标签:

【中文标题】Symfony2 3 个实体之间的映射【英文标题】:Symfony2 mapping between 3 entities 【发布时间】:2013-03-09 02:16:14 【问题描述】:

我有三个实体:EventPhotoUser

三个主要关系:

一个事件有 0 张或更多张照片(蓝色关系,OneToMany) 一张照片创建了一个事件,我称之为第一张照片(红色关系, 一对一) 用户可以创建 0 张或多张照片(紫色关系, 一对多)

我想要映射事件和创建它的用户之间的关系,而不添加或更改我的数据库。表示创建事件第一张照片的用户。

我不是在寻找我成功执行的 SQL 查询,而是在我的 User.php 实体中寻找真正的映射。

$user->getEvents() 会给出用户创建的事件。

我不能成功这样做......有什么想法吗?我是否有义务在我的数据库中添加或更改某些内容?

【问题讨论】:

【参考方案1】:

我看到了两种方法:

1) 进行命名原生查询http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/native-sql.html#named-native-query

2) 写类似

public function getEvents()

     $res = array();
     $photos = $this->getPhotos();
     foreach($photos as $photo) 
         $res[] = $photo->getEvent();
     

     return $res;

【讨论】:

$photo->getEvent();会给出照片所在的事件,而不一定是由照片创建的事件(如果有的话) $photo->getEvent() 应该返回与事件的 OneToOne 关系。如果它可以为空,您可以添加一个条件来过滤非空值。

以上是关于Symfony2 3 个实体之间的映射的主要内容,如果未能解决你的问题,请参考以下文章

symfony2 不是有效的实体或映射的超类

Symfony2:字段或鉴别器列映射中实体上列“id”的重复定义

symfony2 不是有效的实体或映射的超类(使用的超类)

Symfony2 使用父级中的一个字段和具有不同注释/映射的扩展实体

Symfony2 Class Brenne\BaseBundle\Entity\Websites 不是有效的实体或映射的超类

symfony2不是有效实体或映射超类(使用超类)