Doctrine OneToMany 关系问题
Issue with Doctrine OneToMany relationship
我对学说关系有疑问。我尝试了不同的方法,但任何方法都行不通。
想法是我有一个新闻实体,每条新闻都应该有很多评论。所以我接下来试试:
新闻实体:
/**
* @ORM\OneToMany(targetEntity="App\ORM\Entity\NewsComment", mappedBy="news")
*/
protected \Doctrine\Common\Collections\Collection $comments;
/**
* News constructor.
*/
public function __construct() {
$this->comments = new ArrayCollection();
}
和 NewsComment 实体:
/**
* @ORM\ManyToOne(targetEntity="App\ORM\Entity\News", inversedBy="comments")
*/
protected \App\ORM\Entity\News $news;
每个实体也有自己的 get 和 set 方法。
但是,当我收到新闻实体时,可以获取评论集合,但它始终为空。另一方面,我可以获取任何 NewsComment 实体并从该 News 实体中获取。它工作正常。但不是另一种方式。
我的代码有什么问题吗?
Doctrine 将拥有的 (non-inversed) 集合默认设置为惰性集合。
当通过数据库检索实体时,您应该看到一个空的 PersistentCollection
而不是 ArrayCollection
,initialized
属性 设置为 false。
当对该集合调用任何方法时,学说会触发初始化该集合并填充它所需的查询。
仅应在调用 isEmpty
.
时检查集合是否为空
我对学说关系有疑问。我尝试了不同的方法,但任何方法都行不通。 想法是我有一个新闻实体,每条新闻都应该有很多评论。所以我接下来试试:
新闻实体:
/**
* @ORM\OneToMany(targetEntity="App\ORM\Entity\NewsComment", mappedBy="news")
*/
protected \Doctrine\Common\Collections\Collection $comments;
/**
* News constructor.
*/
public function __construct() {
$this->comments = new ArrayCollection();
}
和 NewsComment 实体:
/**
* @ORM\ManyToOne(targetEntity="App\ORM\Entity\News", inversedBy="comments")
*/
protected \App\ORM\Entity\News $news;
每个实体也有自己的 get 和 set 方法。
但是,当我收到新闻实体时,可以获取评论集合,但它始终为空。另一方面,我可以获取任何 NewsComment 实体并从该 News 实体中获取。它工作正常。但不是另一种方式。
我的代码有什么问题吗?
Doctrine 将拥有的 (non-inversed) 集合默认设置为惰性集合。
当通过数据库检索实体时,您应该看到一个空的 PersistentCollection
而不是 ArrayCollection
,initialized
属性 设置为 false。
当对该集合调用任何方法时,学说会触发初始化该集合并填充它所需的查询。
仅应在调用 isEmpty
.