gpt4 book ai didi

php - 如何确定 Doctrine 2 中的表关系是双向的还是单向的?

转载 作者:IT王子 更新时间:2023-10-28 23:57:46 26 4
gpt4 key购买 nike

我正在将我的 Zend 应用程序从 Doctrine 1.1.4 升级到 Doctrine 2.0.6。

目前,我正致力于映射实体之间的关联。在学说 2 中 Documentation它说'关系可能是双向的或单向的。我对这些术语在给定上下文中的含义感到困惑。

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

感谢您的帮助。

最佳答案

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

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

考虑一个典型的“帖子”和“标签”架构。通常,您会实现双向关联:

<?php

class Post {
// ...

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

// ...
}

class Tag {
// ...

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

// ...
}

现在,假设您决定从不(或很少)需要回答“哪些帖子有标签 'foo'?”之类的问题。您可以在 Tag 实体中省略 $posts 关联,将其转换为单向关联,并减轻 ORM 的一些负担。

您仍然可以回答这类问题,但您必须编写代码才能做到这一点。

事实上,在帖子/标签场景中这可能是一个好方法,因为您通常不会从标签中添加/删除帖子。通常,您只会在帖子中添加/删除标签。在寻找“所有带有标签'x'的帖子”时,您只会从标签转到帖子,这可以在某种服务类中轻松实现。

关于php - 如何确定 Doctrine 2 中的表关系是双向的还是单向的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6662820/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com