Symfony2 3 个实体之间的映射
Posted
技术标签:
【中文标题】Symfony2 3 个实体之间的映射【英文标题】:Symfony2 mapping between 3 entities 【发布时间】:2013-03-09 02:16:14 【问题描述】:我有三个实体:Event、Photo和User。
三个主要关系:
一个事件有 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:字段或鉴别器列映射中实体上列“id”的重复定义
Symfony2 使用父级中的一个字段和具有不同注释/映射的扩展实体
Symfony2 Class Brenne\BaseBundle\Entity\Websites 不是有效的实体或映射的超类