什么是持久集合



我的数据库中有一个一对多关系。元素的编辑、删除和添加过去工作得很好。然而,经过一些更改(我无法追踪所有更改)后,它就不再起作用了
现在,当我获取具有一对多关系的对象时,我会得到一个持久集合来表示我的多方集合。我想以前不是这样的。在我的构造函数中,我创建了一个新的数组集合,而不是持久集合。

我查阅了条令文件,发现:

PersistentCollection表示具有持久状态。

我不明白那是什么意思。

你能告诉我吗:

  1. 有一个简单的一对多的持久集合是正常的吗
  2. 这些收藏品是如何出现的?(而不是常规阵列采集)
  3. 最后持久收集

1.使用简单的一对多持久集合是否正常?

不,正常的是ArrayCollection,我以前从未使用过PersistentCollection,但它有一些有用的功能,在某些情况下可能会有用。

http://www.doctrine-project.org/api/orm/2.1/class-Doctrine.ORM.PersistentCollection.html

  1. 这些收藏品是如何出现的?(而不是通常的ArrayCollection)

它们是集合——它们看起来和普通的ArrayCollection一样,里面有带有其类型的实体。

  1. 最后,持久集合究竟有什么用途

正如您在文档中看到的那样,PersistentCollection具有ArrayCollection所没有的大量函数,并且PersistentCllection使用EntityManager,该EntityManager允许与数据库进行交互,而不必持久化,只需刷新即可。

添加到Serrar的描述中。

PersistentCollections only注意到另一个实体的连接。如果您正确地制作了OneToMany或ManyToOne映射/链接,这是正确的。

use DoctrineCommonCollectionsArrayCollection;
public function __construct()
{
    $this->comments = new ArrayCollection();
}
// @ORMOneToMany(targetEntity="Comments", mappedBy="pages")
private $comments;
public function getComments()
{
    return $this->comments;
}
public function setComments(Comments $comments)
{
    $this->comments = $comments;
}

它们不会向您提供数组数据。

在上面的示例中,使用PageEntity的getComments方法来拉入与当前页面相关的注释。这假设您拥有页面对象。在构造中设置新的ArrayCollection对象非常重要:关系映射元数据链

原则:阶级坚持收集-顶部的描述描述了目的。

相关内容

  • 没有找到相关文章

最新更新