假设我们有两个表:Post和Category,以及两个具有相同category_id
的Post,假设为1。
$post1->getCategory()->getName()
将加载具有category_id 1 的类别
$post2->getCategory()->getName()
将执行相同的查询以加载相同的类别。
有没有什么解决方案可以不进行两次相同的查询?
我可能错了,但我相信Doctrine会利用内部缓存来优化这种查询。AFAIK它将保留应用程序使用的对象池,因此第一次加载类别(post1)时,它将在缓存中保留该对象的内部引用,因此第二次调用同一类别时,它会返回以前使用的实例,而不是对数据库进行新查询。