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

我有三个实体:EventPhotoUser

三个主要关系:

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

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

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

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

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

【问题讨论】:

    标签: database symfony mapping associations


    【解决方案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 关系。如果它可以为空,您可以添加一个条件来过滤非空值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    • 2018-10-21
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 2013-11-26
    相关资源
    最近更新 更多