如何在学说中不加载两次相同的引用


How to not load the same reference twice in doctrine

假设我们有两个表:Post和Category,以及两个具有相同category_id的Post,假设为1。

$post1->getCategory()->getName()将加载具有category_id 1 的类别

$post2->getCategory()->getName()将执行相同的查询以加载相同的类别。

有没有什么解决方案可以不进行两次相同的查询?

我可能错了,但我相信Doctrine会利用内部缓存来优化这种查询。AFAIK它将保留应用程序使用的对象池,因此第一次加载类别(post1)时,它将在缓存中保留该对象的内部引用,因此第二次调用同一类别时,它会返回以前使用的实例,而不是对数据库进行新查询。