Php 在原则2中,如何确定表关系是双向的还是单向的?

Php 在原则2中,如何确定表关系是双向的还是单向的?,php,zend-framework,mapping,models,doctrine-orm,Php,Zend Framework,Mapping,Models,Doctrine Orm,在我的Zend应用程序中,我正在从原则1.1.4升级到原则2.0.6 目前,我正在映射实体之间的关联。在教义2中,它说“关系可能是双向的,也可能是单向的。”。我对这些术语在给定上下文中的含义感到困惑 如何确定关系是单向的还是双向的 感谢您的帮助。如果两个实体都包含对另一个实体的引用,则关系是双向的 如果省略其中一个引用,它是单向的 考虑一个典型的“posts”和“tags”模式。通常,您将实现双向关联: <?php class Post { // ... /**

在我的Zend应用程序中,我正在从原则1.1.4升级到原则2.0.6

目前,我正在映射实体之间的关联。在教义2中,它说“关系可能是双向的,也可能是单向的。”。我对这些术语在给定上下文中的含义感到困惑

如何确定关系是单向的还是双向的


感谢您的帮助。

如果两个实体都包含对另一个实体的引用,则关系是双向的

如果省略其中一个引用,它是单向的

考虑一个典型的“posts”和“tags”模式。通常,您将实现双向关联:

<?php

class Post {
    // ...

    /** 
     * @ManyToMany(targetEntity="Tag",inversedBy="posts")
     */
     protected $tags;

    // ...
}

class Tag {
    // ...

    /**
     * @ManyToMany(targetEntity="Post",mappedBy="tags")
     */
     protected $posts

    // ...
}

与timdev的答案相同

单向和双向只是ORM的概念,这些与数据库无关, 假设你有一个单身的亲戚-

用户有博客

因此,您可以将其作为OneToMany属性添加到用户实体中

但显然存在着manytone关系

博客有用户


因此,您可以选择在博客实体中创建多人关系,如果您想从博客实体访问用户,则添加此属性。如果您不想,则不添加,这是不必要的在这两种情况下(您是否添加双向引用),ORM将保持相同的数据库结构(博客表将有用户id列)。

哇,简单的解释但足够清晰,让我们理解这个概念。非常感谢先生!