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