2012-08-23 2 views
0

게시 된 모든 레코드를 반환하는 쿼리를 작업하고 있으며 최신 updated_version으로 그룹화하고 정렬합니다.그룹화 된 레코드 수를 찾기 위해 doctrine 루프를 얻는 방법

그런 다음 결과를 필터링하여 지난 24 시간, 주 및 월에 업데이트 된 결과를 표시합니다.

모든 작품 dandy. 그러나 이러한 세 가지 날짜 기준에서 레코드가 업데이트되지 않은 경우 "No records has been updated"라는 조건을 추가하고 싶습니다.

쿼리에서 이러한 그룹을 분리하여 확인하거나 루프에서 변수를 설정할 수 있는지 궁금합니다. 루프 문제는 루프에서 0 결과 조건을 얻을 수 있지만 루프 내부에서이를 확인하므로 루프의 각 레코드에 대해 "결과를 찾을 수 없습니다"라는 메시지가 표시됩니다.

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

그리고 루프 :

OK, 여기에 쿼리입니다

$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 문에 따라 데이터를 전달할 수 있습니다.

지금까지 꽤 잘 작동합니다.

관련 문제