0

我正在处理一个返回所有已发布记录的查询,并按最新的 updated_version 对它们进行分组和排序。

然后我过滤该结果以显示在过去 24 小时、一周和一个月内更新的结果。

所有的作品花花公子。但是,我想添加一个条件,即如果这三个日期条件中的每一个都没有更新记录,则回显“没有更新记录”。

我很好奇我是否可以在查询中隔离这些组并对其进行检查,或者可能在循环中设置一个变量。循环的问题是,我可以在循环中获得 0 结果条件,但是因为它正在检查循环内部,所以我得到循环中每条记录的“未找到结果”的回声。

好的,这是查询:

//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?当然,我可以在不设置三个查询来获得结果的情况下做到这一点吗?

4

1 回答 1

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包含的内容制定条件。表示循环中的单个条目。它在循环外实例化,然后可以根据循环内的if语句传递数据。$message$lineitem

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

于 2012-08-24T19:17:45.990 回答