php - Doctrine OneToMany 关系的问题
问题描述
我对教义关系有疑问。我尝试不同的方法,但任何方法都行不通。想法是我有一个新闻实体,每条新闻都应该有很多评论。所以我接下来尝试:
新闻实体:
/**
* @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 将拥有(非反转)集合设置为惰性。
通过数据库检索实体时,您应该看到一个空的PersistentCollection
而不是ArrayCollection
,其initialized
属性设置为 false。
当调用该集合的任何方法时,doctrine 会触发初始化集合并填充它所需的查询。
集合空虚应该只在调用时检查isEmpty
。
推荐阅读
- mysql - 更改订阅 bbpress 论坛的每个 wordpress 用户的电子邮件
- sql - 计算两个日期之间的天数,不包括周末
- swift - 在核心数据中存储经常更改的图像数组的最有效方法
- c - C套接字 - 客户端在服务器端关闭文件描述符后继续读取
- typescript - Typescript 通用接口参数赋值
- html - 渐变在 Microsoft Edge 中未正确显示
- c# - C# 提取/解压缩 .EXE 文件
- wordpress - 在 Azure 应用程序网关后面访问 Wordpress
- java - 如何使用 Netbeans GUI 编辑器检查单击了哪个按钮
- javascript - jQuery Ajax 不在 Safari 上发布