以下代码段演示了Doctrine的一些特殊行为。
$user = Doctrine::getTable('User')->find(1);
$user->name = 'Zoppy';
// This line prevents the subsequent $user->save() from working as expected
$old_user = Doctrine::getTable('User')->find(1);
$user->save();
// Does not print 'Zoppy'
echo Doctrine::getTable('User')->find(1)->name . "\n";
这里发生了什么?
在执行保存之前,是否有某种方法可以加载旧版本的记录?似乎Doctrine正在某处缓存某些东西 - 究竟是什么,以及如何将其关闭! (至少是暂时的。)
答案 0 :(得分:1)
我最近问similar question,尽管我用关系来表达它。答案是,这取决于Doctrine中缓存的本质。学说将水合物保存在记忆中。您可以clone
该对象,但只要您遵循任何关系,您就会回到原点。