2012-08-23 33 views
0

我正在處理一個正在返回所有已發佈記錄的查詢,並將它們按最新的updated_version進行分組和排序。如何獲得教條循環來查找分組記錄的數量

然後我篩選該結果以顯示在過去24小時,每週和每月更新的結果。

所有作品花花公子。不過,我想補充一點,如果在這三個日期標準中沒有更新記錄,則回顯「沒有記錄已更新」。

我很好奇,如果我可以在查詢中隔離這些組並檢查它們,或者可能在循環中設置一個變量。循環的問題是,我可以在循環中得到0結果條件,但是因爲它正在檢查循環內部,所以我得到了循環中每個記錄的「未找到結果」的回聲。

OK,下面是該查詢:

//return all unpublished records 
$draftEntries = Doctrine::getTable("foo") 
    ->createQuery() 
    ->where('published = 0') 
    ->groupBy('updated_at') 
    ->orderBy("updated_at DESC") 
    ->execute(); 

,循環:

$message .= "These profiles were edited within the last 24 hours: \n";      
    foreach ($draftEntries as $entry) { 
     $currentDay = substr($entry['updated_at'], 0, 10); 
     $condition = false; 
     if($currentDay == $today) { 
      $condition = true; 
      $message .= $entry['last_name'] . ", " . $entry['first_name'] . "\n"; 
     else { 
      $message .= "There were records updated yesterday"; 
      echo $condition; 
     } 
    } 

這僅僅是在三個環路的,但我想你,我打算要點。顯然,這是返回的循環:

昨天有更新記錄。 昨天有更新記錄。 昨天有更新記錄。 ...

這是不期望的。

因此,從查詢中,我可以檢查groupBy是否大於0? 當然,我可以做到這一點,而無需設置三個查詢來獲得正確的結果?

回答

0

這就是我解決這個問題的方法。如果有更好的答案,請告訴我。

我迪迪不嘗試將組隔離在查詢中,我只是用在迴路中的幾個條件語句:

//Edited in the last 24 hours 
    $message .= "<p>These profiles were edited within the last 24 hours: </p><ul>\n"; 
    $lineitem = "";      
    foreach ($draftEntries as $draftentry) { 
     $currentDay = substr($draftentry['updated_at'], 0, 10); 
     if($currentDay == $today) { 
      $listpiece .= $draftentry['id']; 
      $listpiece .= "&profile_type=faculty'>".$draftentry['last_name'] . ", " . $draftentry['first_name'] . "</a>/Edited by: ".$draftentry['last_updater']."</li> \n"; 
      $lineitem .= $listpiece; 
     } 
    } 
    if ($lineitem == "") { 
     $message .= "No edits were made."; 
    } 
    else { 
     $message .= $lineitem; 
    } 

我串接$message,但我需要制定什麼得到的條件包含在循環外部的$message中。 $lineitem表示循環中的單個條目。它在循環外被實例化,然後可以根據循環內部的if語句傳遞數據。

到目前爲止,它工作得很好。