0
在Symfony中使用Doctrine 1.2.4时,我遇到了意想不到的行为:通过getter访问记录没有导致与拍摄查询以检索这些相同记录相同的结果。这是怎么回事:Doctrine 1.2.4中的记录同步问题
我正在处理两个表:一个tpTrip表,我们在其上执行操作(=状态更改),和一个tpTripActivity表,跟踪所有已执行的操作行程。 tpTrip具有指向tpTripActivity的一对多关系。
在某些时候,我想知道是否在tpTrip记录上执行了“签入”操作。所以在我的学说tpTrip类,我写的(幼稚)方法:
public function has_been_checked_in()
{
foreach($this->getActivities() as $activity)
{
if($activity->getAction() == "CheckIn") return true;
}
return false;
}
现在一些挫折后,指出最近进行的签入的动作并没有在我的结果转向了,我写了下面的功能,这是我预计会这样做:
public function has_been_checked_in2()
{
$total = Doctrine_Core::getTable("tpTripActivity")->createQuery("a")
->select("count(*)")
->where("trip_id = ?", $this->getId())
->andWhere("action = ?", "CheckIn")
->fetchOne(array(), Doctrine_Core::HYDRATE_SINGLE_SCALAR);
return ($total > 0);
}
在这第二个版本中,我可以得到一致的结果。
所以我的问题是:为什么我不能得到与这两个函数相同的结果?我如何确保在使用外键获取者时我的记录是最新的?