Doctrine 1.2 与条令更新混淆。(1.2.4)

Doctrine 1.2 与条令更新混淆。(1.2.4),doctrine-1.2,Doctrine 1.2,在我的单元测试(在symfony1.4上)中,我天真地试图编辑一条记录来进行测试。然而,在一些bug搜索之后,我发现我的脚本并没有达到我期望的效果。以下是令人不快的部分: $tp_vehicle = Doctrine_Core::getTable("tpVehicle")->find(10); $tp_vehicle->setLocationId(7); $tp_vehicle->save(); =>我的位置id没有任何变化!无论何时执行$tp\u vehicle->getL

在我的单元测试(在symfony1.4上)中,我天真地试图编辑一条记录来进行测试。然而,在一些bug搜索之后,我发现我的脚本并没有达到我期望的效果。以下是令人不快的部分:

$tp_vehicle = Doctrine_Core::getTable("tpVehicle")->find(10);
$tp_vehicle->setLocationId(7);
$tp_vehicle->save();
=>我的位置id没有任何变化!无论何时执行
$tp\u vehicle->getLocationId()
,我都会得到原来的值,即8

所以我试着这样做

$tp_vehicle = Doctrine_Core::getTable("tpVehicle")->find(10);
$tp_vehicle->location_id = 7;
$tp_vehicle->save();
这样:

Doctrine_Core::getTable("tpVehicle")->createQuery("v")
                            ->update()
                            ->set("location_id", 7)
                            ->where("id = ?", 10)
                            ->execute();
没有运气! 最后,我可以用这段代码得到我想要的:

$tp_vehicle->setLocation(Doctrine_Core::getTable("tpLocation")->find(7));
这对我来说很尴尬,因为我真的不明白背后的逻辑。我有点直觉,我错过了一些与缓存和条令优化相关的东西,但是。。。我无法确切理解这一切是如何组合在一起的


有人能解释这一点吗?

原则允许刷新记录,如中所述。具体如下:

$tp_vehicle->refresh();
$tp_vehicle->getLocationId();
另请参见关于堆栈溢出的帖子