Doctrine ORM Association映射两列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Doctrine ORM Association映射两列相关的知识,希望对你有一定的参考价值。

我想从多个实体到一个实现一对多的关联。

Entity_1,Entity_2,Entity_3,Entity _... all对于Entity_A应该具有一对多。

但这在Doctrine中是不可能的:

有解决方法吗?什么是最好的方式?

答案

你需要ManyToOne // OneToMany

但是如果你没有主键需要主键,你需要使用连接构建自定义查询

    manyToOne:
        nameforthepoint:
            targetEntity: EntityDestinyName
            cascade: {  }
            fetch: LAZY
            mappedBy: null
            inversedBy: null (depends bidirectional)
            joinColumns:
                name_of_the_origin_column:
                    referencedPropertyEntityName: name_of_the_destiny_column
            orphanRemoval: false

如果您没有通过主键关联(例如Symfony Doctrine查询加入):

        $em = $this->getEntityManager();
        $db = $em->getConnection();

        $query = "SELECT * FROM  table as p1
            INNER JOIN table2 AS p2 ON p2.column = p1.column";

        $stmt   = $db->prepare($query);
        $params = array();
        $stmt->execute($params);

        $resultset = $stmt->fetchAll();

希望它对您有所帮助,如果您需要其他信息,请询问/评论。

以上是关于Doctrine ORM Association映射两列的主要内容,如果未能解决你的问题,请参考以下文章

教义:在 OneToMany 关联中忽略了 mappedBy 的值

Symfony2:传递给 Doctrine\ORM\EntityRepository::__construct() 的参数 2 必须是 Doctrine\ORM\Mapping\ClassMetada

PHP Doctrine 初学者:找不到 Doctrine\ORM\Tools\Setup

Doctrine Abstract - 具体类 ORM

Doctrine异常 - [Doctrine ORM Mapping MappingException]

ORM 映射器 .NET linux 服务器