0

公開されているすべてのレコードを返すクエリに取り組んでおり、最新のupdated_versionでグループ化して並べ替えています。

次に、その結​​果をフィルタリングして、過去24時間、週、および月に更新された結果を表示します。

すべての作品はダンディです。ただし、これら3つの日付基準のそれぞれでレコードが更新されていない場合は、「レコードは更新されていません」とエコーするという条件を追加したいと思います。

クエリでこれらのグループを分離してそれをチェックできるか、あるいはループに変数を設定できるかどうか知りたいです。ループの問題は、ループ内で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;
        }
    } 

これは3つのループのちょうど上にありますが、あなたは私の意図の要点を理解していると思います。明らかに、これは次を返すループです。

昨日更新された記録がありました。昨日更新された記録がありました。昨日更新された記録がありました。..。

これは望ましくありません。

それで、クエリから、groupByが0より大きいかどうかを確認できますか?確かに、結果を正しく取得するために3つのクエリを設定しなくても、これを実行できますか?

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 に答える