我正在处理一个返回所有已发布记录的查询,并通过最新的updated_version对它们进行分组和排序。
然后我会过滤该结果,以显示过去24小时,一周和一个月内更新的结果。
所有作品花花公子。但是,我想补充条件是,如果在这三个日期标准中没有更新记录,则回显“没有记录已更新”。
我很好奇我是否可以在查询中隔离这些组并检查它,或者可能在循环中设置变量。循环的问题是,我可以在循环中获得0结果条件,但因为它检查INSIDE循环,我得到循环中每个记录的“找不到结果”的回声。
好的,这是查询:
//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 :(得分: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语句传递数据。