7

ブログ記事のアーカイブ リストを生成しようとしています。アーカイブ リストには、次のように年と日付が新しい順に表示されます。

2013 (21)
    - May (2)
    - April (3)
    - March (5)
    - February (1)
    - January (10)
2012 (10)
    - December (6)
    - November (4)

中の数字()はその期間の投稿数です。年または月を選択すると、選択した期間のブログ投稿のみが表示されます。

これまでのところ、次のようにして、各ブログ投稿の年月を確認することしかできませんでした。

$posts = Post::all();
$archive = array();
foreach ($posts as $post) {
    $year = date('Y', strtotime($post->created_at));
    $month = date('m', strtotime($post->created_at));
}

上記の目的を達成するにはどうすればよいですか?

4

4 に答える 4

0

近いと思いますが、データをテストする必要があります。それはあなたが求めていることですか?

データを照会することもできます。

これが問題を解決する唯一の方法だと言っているわけではありませんが、これはどのように機能しますか? for each ステートメントは、次のようにデータを配列に格納できます。

function checkdate($datein,$posts){

    foreach ($posts as $post){
        $year = date('Y', strtotime($post->created_at)))
        $month = date('m', strtotime($post->created_at)))

        if(($year == $datein->year)||($month == $datein->month)){
        //good
        }
        else {
        //bad
        }
    }
}

これでうまくいきますが、そもそもデータをフィルター処理していたらどうなるでしょうか。Laravel には、それを処理するためのより良い方法があるに違いありません。

うん! http://four.laravel.com/docs/eloquent#query-scopes

ポリモーフィズムとクエリ関係、動的プロパティについて読み続けてください...

于 2013-05-11T08:12:34.903 に答える