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);
}
在這第二個版本中,我可以得到一致的結果。
所以我的問題是:爲什麼我不能得到與這兩個函數相同的結果?我如何確保在使用外鍵獲取者時我的記錄是最新的?